XML Approach:
Reads : 2 Duration:5 ms
Substring Approach:
Reads : 16 Duration: 14 ms
--declare a variable and populate it with a comma separated string
DECLARE @SQLString VARCHAR(MAX)
SET @SQLString = N'94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111'
--append a comma to the string to get correct results with empty strings or strings with a single value (no commas)
SET @SQLString = @SQLString + ',';
DECLARE @X XML
SET @X = CAST('' + REPLACE(@SQLString, ',', '') + '' AS XML)
SELECT t.value('.', 'INT')
FROM @x.nodes('/A') as x(t)
declare @itemids VARCHAR(MAX)
SET @itemids=N'94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111'
DECLARE @Delimiter NCHAR(2)
SELECT @Delimiter = ','
SELECT
LTRIM(RTRIM(SUBSTRING(@itemids, [Number],CHARINDEX(@Delimiter, @itemids + @Delimiter, [Number]) - [Number])))
FROM
dbo.helper_Number (NOLOCK)
WHERE
Number <= LEN(@itemids)
AND SUBSTRING
(
@Delimiter + @itemids, [Number], LEN(@Delimiter)
) = @Delimiter
Quick Way to Create Comma Seperated List using STUFF and XML PATH
-- STUFF SYNTAX
-- STUFF ( character_expression , start , length , replaceWith_expression )
SELECT STUFF(( SELECT DISTINCT
',' + CONVERT(VARCHAR(255), ItemID)
FROM xib.Item
FOR
XML PATH('')
), 1, 1, '')