I have a variable in my stored procedure `@param varchar’, the parameter value will be like ‘333,445,443,222’ or ‘555’
I need to store into as row in the #Employee table, Code column.
Expected output:
#Employee temp table:
Code ---- 333 445 443 222
Advertisement
Answer
It will work with any SQL server version. User define table function
CREATE FUNCTION dbo.SplitString
(
@Value nvarchar(max),
@Delim nvarchar(5)
)
RETURNS TABLE
AS
RETURN ( SELECT [Value] FROM
(
SELECT [Value] = LTRIM(RTRIM(SUBSTRING(@Value, [Number],
CHARINDEX(@Delim, @Value + @Delim, [Number]) - [Number])))
FROM (SELECT Number = ROW_NUMBER() OVER (ORDER BY name)
FROM sys.all_columns) AS x WHERE Number <= LEN(@Value)
AND SUBSTRING(@Delim + @Value, [Number], DATALENGTH(@Delim)/2) = @Delim
) AS y
);
and then it can be used
DECLARE @param varchar(1000) SET @param = '333,445,443,222' SELECT value AS Code FROM dbo.SplitString(@param, ',');