This blog explains how to a convert a delimiter-separated list into a table. First of all we need to define a table valued function that takes two parameters; the first parameter is a list and the second parameter is a delimiter character and returns a table. Then we use this function to generate a table from list.
Function:

  1. CREATE FUNCTION dbo.Fun_ListTOTable
  2. (
  3. @String_List VARCHAR(MAX),
  4. @Delim_String CHAR
  5. )
  6. RETURNS
  7. @Tab TABLE
  8. (
  9. item VARCHAR(MAX)
  10. )
  11. AS
  12. BEGIN
  13. DECLARE @item VARCHAR(MAX), @Pos INT
  14. SET @String_List = @String_List+ @Delim_String;
  15. WHILE LEN(@String_List)>0
  16. BEGIN
  17. SET @Pos = CHARINDEX(@Delim_String, @String_List, 1)
  18. SET @item =SUBSTRING(@String_List,1,@Pos-1);
  19. IF LEN(LTRIM(@item))>0
  20. BEGIN
  21. INSERT INTO @Tab (item)
  22. VALUES (CAST(@item AS VARCHAR(MAX)))
  23. END
  24. SET @String_List = SUBSTRING(@String_List,@Pos+1,LEN(@String_List));
  25. END
  26. RETURN
  27. END
  28. GO

Example:

  1. SELECT item AS Data
  2. FROM dbo.Fun_ListTOTable('Pankaj#Sandeep#Neeraj#Sanjjev#Naru','#')

Result: