Monday, April 16, 2012

Function to insert comma seperated values into table

CREATE FUNCTION [dbo].[CommaSplit]
(
@InputString VARCHAR(MAX)
)
RETURNS
@OutputTable TABLE
(
-- Add the column definitions for the TABLE variable here
Val VARCHAR(MAX)
)
AS
BEGIN
-- Fill the table variable with the rows for your result set
DECLARE @Val VARCHAR(MAX),@Pos INT,@Len INT
SET @Len = LEN(@InputString)

SET @Pos=0
WHILE (CHARINDEX(',',@InputString,@Pos)-@Pos) > 0
BEGIN

SET @Val = SUBSTRING(@InputString,@Pos,(CHARINDEX(',',@InputString,@Pos)-@Pos))

INSERT INTO @OutputTable(Val)
SELECT @Val
SET @Pos = CHARINDEX(',',@InputString,@Pos)+1

END
IF @Pos <= @Len
BEGIN

SET @Val = SUBSTRING(@InputString,@Pos,(@Len+1)-@Pos)

INSERT INTO @OutputTable(Val)
SELECT @Val

END

RETURN
END

SELECT * FROM dbo.CommaSplit('1, Value1, Value2, 2')
--DROP FUNCTION CommaSplit

No comments:

Post a Comment