The requirement is to convert the delimited column into rows

Input data and required output details are given below

Eno Ename Esloc EDept
1 ABC NJ 10,20,30,40,50

Output:-

Eno Ename Esloc EDept
1 ABC NJ 10
1 ABC NJ 20
1 ABC NJ 30
1 ABC NJ 40
1 ABC NJ 50

T-SQL -Split a delimited column data using XML

SQL
Edit|Remove
DECLARE @DemoTable table 
 ( 
 Eno int, 
 Ename char(10), 
 EsLoc char(10), 
 EDept varchar(20)) 
  
INSERT INTO @DemoTable values(1,'Prashanth','NJ','1,2,3,4,5') 
INSERT INTO @DemoTable values(2,'Jayaram','NY','1,2,3') 
 
SELECT A.ENo, A.EName , A.EsLoc, 
 Split.a.value('.''VARCHAR(100)') AS Dept  
 FROM (SELECT ENo,EName,EsLoc, 
 CAST ('<M>' + REPLACE(EDept, ',''</M><M>') + '</M>' AS XML) AS String  
 FROM @DemoTable) AS A CROSS APPLY String.nodes ('/M') AS Split(a); 
 
Output:-

XML

OR

Using UDF-

Reference Link :- http://visakhm.blogspot.in/2010/02/parsing-delimited-string.html 


SQL
Edit|Remove
CREATE FUNCTION ParseValues 
(@String varchar(8000), @Delimiter varchar(10) ) 
RETURNS @RESULTS TABLE (ID int identity(1,1), Val varchar(8000)) 
AS 
BEGIN 
DECLARE @Value varchar(100) 
WHILE @String is not null 
BEGIN 
SELECT @Value=CASE WHEN PATINDEX('%'+@Delimiter+'%',@String) >0 THEN LEFT(@String,PATINDEX('%'+@Delimiter+'%',@String)-1) ELSE @String END, @String=CASE WHEN PATINDEX('%'+@Delimiter+'%',@String) >0 THEN SUBSTRING(@String,PATINDEX('%'+@Delimiter+'%',@String)+LEN(@Delimiter),LEN(@String)) ELSE NULL END 
INSERT INTO @RESULTS (Val) 
SELECT @Value 
END 
RETURN 
END 
 
DECLARE @DemoTable table 
 ( 
 Eno int, 
 Ename char(10), 
 EsLoc char(10), 
 EDept varchar(20)) 
  
INSERT INTO @DemoTable values(1,'Prashanth','NJ','1,2,3,4,5') 
INSERT INTO @DemoTable values(2,'Jayaram','NY','1,2,3') 
 
SELECT t.Eno, t.Ename,t.EsLoc,f.Val Dept 
FROM @DemoTable t 
CROSS APPLY dbo.ParseValues(t.EDept,',')f 
 

Output:-

XML-1