Split String With Comma Separated Delimiter And Convert To Table Rows In SQL Server

To split comma separated string in SQL Server we need to write custom method for that we need to create one function like as shown below.
Custom Split function to split comma separated string into table,
  1. CREATE FUNCTION dbo.Split(@String nvarchar(4000), @Delimiter char(1))  
  2. RETURNS @Results TABLE (Items nvarchar(4000))  
  3. AS  
  4. BEGIN  
  5. DECLARE @INDEX INT  
  6. DECLARE @SLICE nvarchar(4000)  
  7. -- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z  
  8. -- ERO FIRST TIME IN LOOP  
  9. SELECT @INDEX = 1  
  10. WHILE @INDEX !=0  
  11. BEGIN  
  12. -- GET THE INDEX OF THE FIRST OCCURENCE OF THE SPLIT CHARACTER  
  13. SELECT @INDEX = CHARINDEX(@Delimiter,@STRING)  
  14. -- NOW PUSH EVERYTHING TO THE LEFT OF IT INTO THE SLICE VARIABLE  
  15. IF @INDEX !=0  
  16. SELECT @SLICE = LEFT(@STRING,@INDEX - 1)  
  17. ELSE  
  18. SELECT @SLICE = @STRING  
  19. -- PUT THE ITEM INTO THE RESULTS SET  
  20. INSERT INTO @Results(Items) VALUES(@SLICE)  
  21. -- CHOP THE ITEM REMOVED OFF THE MAIN STRING  
  22. SELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)  
  23. -- BREAK OUT IF WE ARE DONE  
  24. IF LEN(@STRING) = 0 BREAK  
  25. END  
  26. RETURN  
  27. END  
Once we create custom function Split() run sample query like as shown below,
  1. SELECT items FROM [dbo].[Split] ('861,739,10,1670'',')  
Once we run above query we will get output.