I have this query:
DECLARE @holdIds VARCHAR(MAX)
SET @holdIds = '1,2,3'
DECLARE @flagNames NVARCHAR(MAX);
SELECT
    @flagNames = COALESCE(@flagNames + ',', '') + FlagName
FROM
    BurnHoldStatus
WHERE
    BurnHoldStatusID in (@holdIds);
SELECT @flagNames AS FlagName;
In this example the variable '@holdIds' has values '1,2,3' but could have just one value '1'.
When I run the query, an error appears:
Msg 245, Level 16, State 1, Line 6
Conversion failed when converting the varchar value '1,2,3' to data type int.
I try convert the value of '@holdIds' but not work.
Any idea?
Thanks.
[UPDATE]
I found the answer:
DECLARE @holdIds NVARCHAR(MAX);
SET @holdIds = '1,2,3';
DECLARE @holdIdList TABLE(id INT);
INSERT INTO @holdIdList 
    SELECT * FROM Split(@holdIds, ',');
DECLARE @flagNames NVARCHAR(MAX);
SELECT 
    @flagNames = COALESCE(@flagNames + ',', '') + FlagName 
FROM 
    BurnHoldStatus, @holdIdList h 
WHERE 
    BurnHoldStatusID = h.id;
SELECT @flagNames AS FlagName;
In this code I use an function 'Split' to split a string passing the divisor (i.e: ',').
Split function code:
    ALTER FUNCTION [dbo].[Split]
(
    @RowData nvarchar(MAX),
    @SplitOn nvarchar(MAX)
)  
    RETURNS @RtnValue table 
(
    Data nvarchar(MAX)
) 
AS  
BEGIN 
Declare @Cnt int
Set @Cnt = 1
While (Charindex(@SplitOn,@RowData)>0)
Begin
    Insert Into @RtnValue (data)
    Select 
        Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))
    Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
    Set @Cnt = @Cnt + 1
End
Insert Into @RtnValue (data)
Select Data = ltrim(rtrim(@RowData))
Return
END
Thanks for Vercelli by show other post.
Thanks guys :)
 
     
    