join comma delimited data column

后端 未结 6 1486
日久生厌
日久生厌 2020-11-27 06:30

my table1 is :

T1

col1    col2
 C1     john
 C2     alex
 C3     piers
 C4     sara

and so table 2:

T2

         


        
6条回答
  •  情歌与酒
    2020-11-27 07:09

    First write a table value function for split col2 on tbl2.

    CREATE FUNCTION [dbo].[Split](@String varchar(100), @Delimiter char(1))       
    returns @temptable TABLE (items VARCHAR(5))       
    as       
    begin       
        declare @idx int       
        declare @slice VARCHAR(5)
    
        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  
    
    Go
    
    ;WITH    SplitList
              AS ( SELECT   T2.Col1 ,
                            T1.Col2
                   FROM     T2
                            CROSS APPLY dbo.Split(T2.Col2, ',') S
                            INNER JOIN T1 ON T1.Col1 = S.Items
                 )
        SELECT  T2.Col1 ,
                STUFF(( SELECT  ', ' + SplitList.Col2
                        FROM    SplitList
                        WHERE   SplitList.Col1 = T2.Col1
                      FOR
                        XML PATH('')
                      ), 1, 2, '')
        FROM    T2       
    

提交回复
热议问题