;WITH Multiplier (Mult) as (select top (len(@parameter)/100000) row_number() over (order by number) from dbo.tinynumbers union select 1 from dbo.tinynumbers where len(@parameter)/100000 < 1),cteTally (Number) AS (select top (len(@parameter)-1) row_number() over (order by n1.number) from dbo.smallnumbers n1 cross join dbo.smallnumbers n2 cross join multiplier)SELECT ROW_NUMBER() OVER (ORDER BY Number) AS Number, SUBSTRING(@Parameter,Number+1,CHARINDEX(',',@Parameter,Number+1)-Number-1) AS Value FROM cteTallyWHERE SUBSTRING(@Parameter,Number,1) = ','