Click here to Skip to main content
Full site     10M members (35.6K online)    

Adding items in comma-separated string into separate rows in SQL Server

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)   --delimiter used to separate the usernames
DECLARE @tmpUserNames NVARCHAR(MAX)
SET @tmpUserNames = @UserNames
SET @DELIMITER = ‘,’       --Delimiter is a comma
DECLARE @commaIndex INT    
DECLARE @singleUserName NVARCHAR(MAX)
--singleUserName is the variable which holds each item in the comma-separated string

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!!  

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search 
Per page   
GeneralMy vote of 2
PSU Steve
2 May '13 - 4:04 
GeneralRe: My vote of 2
Amogh Natu
2 May '13 - 4:08 

Last Updated 2 May 2013 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2013