Turning a Comma Separated string into individual rows in SQL Server


Problem: A column has a string comma separated value as below.

We need a result like as below
Answer: See the following query it may help you.

CREATE TABLE #TMP(ID INT, NAME VARCHAR(MAX))
INSERT #TMP SELECT 1, 'Dilip,Anil,Raj'
INSERT #TMP SELECT 2, 'Mahesh,Umesh'
INSERT #TMP SELECT 3, 'Rupesh,Uma,Swati'
INSERT #TMP SELECT 4, ''
SELECT * FROM #TMP
;WITH TMP(ID, ITEMS, NAME) AS (
SELECT ID , LEFT(NAME, CHARINDEX(',',NAME+',')-1),
    STUFF(NAME, 1, CHARINDEX(',',NAME+','), '')
FROM #TMP
UNION ALL
SELECT ID, LEFT(NAME, CHARINDEX(',',NAME+',')-1),
    STUFF(NAME, 1, CHARINDEX(',',NAME+','), '')
FROM TMP
WHERE NAME > ''
)
SELECT ID, ITEMS
FROM TMP
ORDER BY ID

DROP TABLE #TMP


It will return the result as above given table pic.
Same as you can use given below query. It will also return the same result as above



CREATE TABLE #TMP(ID INT, NAME VARCHAR(MAX))
INSERT #TMP SELECT 1, 'Dilip,Anil,Raj'
INSERT #TMP SELECT 2, 'Mahesh,Umesh'
INSERT #TMP SELECT 3, 'Rupesh,Uma,Swati'
INSERT #TMP SELECT 4, ''
SELECT * FROM #TMP

SELECT A.id, 
     Split.a.value('.', 'VARCHAR(100)') AS Data 
 FROM 
 (
     SELECT id, 
         CAST ('<M>' + REPLACE(NAME, ',', '</M><M>') + '</M>' AS XML) AS Data 
     FROM  #TMP
 ) AS A CROSS APPLY Data.nodes ('/M') AS Split(a);

DROP TABLE #TMP

 

Related Posts

What is the Use of isNaN Function in JavaScript? A Comprehensive Explanation for Effective Input Validation

In the world of JavaScript, input validation is a critical aspect of ensuring that user-provided data is processed correctly. One indispensa...