Разделенный запятыми столбец SQL 2005 на разделителе

Мой поиск в Google о том, как разделить строку по разделителю, привел к некоторым полезным функциям для разделения строк, когда строка известна (т.е. см. Ниже):

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Split] (@String varchar(8000), @Delimiter char(1))     
   returns @temptable TABLE (items varchar(8000))       
   as       
   begin       
       declare @idx int       
        declare @slice varchar(8000)       

        select @idx = 1       
            if len(@String)<1 or @String is null  return       

       while @idx!= 0       
       begin       
           set @idx = charindex(@Delimiter,@String)       
           if @idx!=0       
               set @slice = left(@String,@idx - 1)       
           else       
              set @slice = @String       

           if(len(@slice)>0)  
               insert into @temptable(Items) values(@slice)       

           set @String = right(@String,len(@String) - @idx)       
           if len(@String) = 0 break       
       end   
   return       
   end  

Это хорошо работает для известной строки, такой как:

SELECT TOP 10 * FROM dbo.Split('This,Is,My,List',',')

Тем не менее, я хотел бы передать столбец в функцию и объединить его с другими моими данными в отдельной строке ... например, с учетом данных:

CommaColumn   ValueColumn1   ValueColumn2
-----------   ------------   -------------
ABC,123       1              2
XYZ, 789      2              3

Я хотел бы написать что-то вроде:

SELECT Split(CommaColumn,',') As SplitValue, ValueColumn1, ValueColumn2 FROM MyTable

И вернуться

SplitValue    ValueColumn1   ValueColumn2
----------    ------------   ------------
ABC           1              2
123           1              2
XYZ           2              3
789           2              3

Возможно ли это, или кто-то делал это раньше?

Ответы на вопрос(5)

Ваш ответ на вопрос