In this post, I’ll show how to insert a items in a comma-separated string into separate rows in a table. Consider for example we have a comma-separated string such as “amogh, anish, anvesh, uday”. After inserting into the table, the output should be like:
I have written a stored procedure which will take the comma-separated string as input and insert a new row into the table for each item in the string. Here I'm assuming that the identity property of the table is set to true and increments by '1' for every insert action performed on the table.
The Stored procedure is as follows:
CREATE PROCEDURE AddCommaSeparatedUsersToTable
(
@UserNames NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @DELIMITER NCHAR(1) DECLARE @tmpUserNames NVARCHAR(MAX)
SET @tmpUserNames = @UserNames
SET @DELIMITER = ‘,’ DECLARE @commaIndex INT
DECLARE @singleUserName NVARCHAR(MAX)
SELECT @commaIndex = 1
IF LEN(@tmpUserNames)<1 OR @tmpUserNames IS NULL RETURN
WHILE @commaIndex!= 0
BEGIN
SET @commaIndex= CHARINDEX(@DELIMITER,@tmpUserNames)
IF @commaIndex!=0
SET @singleUserName= LEFT(@tmpUserNames,@commaIndex– 1)
ELSE
SET @singleUserName = @tmpUserNames
IF(LEN(@singleUserName)>0)
BEGIN
INSERT INTO SampleUserTable
(
UserName
)
VALUES
(
@singleUserName
)
END
SET @tmpUserNames = RIGHT(@tmpUserNames,LEN(@tmpUserNames) – @commaIndex)
IF LEN(@tmpUserNames) = 0 BREAK
END
END
This procedure will insert each item in the comma-separated string (UserNames, given as input parameter to the procedure) into the table “SampleUserTable” in separate rows.
Hope this helps!!
