Split function in SQL Server 2008

前端 未结 4 1445
孤城傲影
孤城傲影 2020-11-28 15:29

I have Table1 with columns like this:

+--+------+
|ID|Name  |
+--+------+
|1 |MSSQL |
+--+------+
|2 |MySQl |
+--+------+
|3 |Oracle|
+--+------         


        
4条回答
  •  鱼传尺愫
    2020-11-28 16:01

    No splitting, also no XML Path, but achieves the right result.

    ;with cte as (
        select *, cast(null as varchar(1024)) as str, cast(0 as int) as ID
        from Table2
    
        union all
    
        select DatabaseName, (case when DatabaseName like cast(t.ID as varchar(32)) + ',%' 
                                        or DatabaseName like '%,' + cast(t.ID as varchar(32)) + ',%'
                                        or DatabaseName like '%,' + cast(t.ID as varchar(32)) 
                                        or DatabaseName = cast(t.ID as varchar(32)) then cast(isnull(str, '') + ',' + t.Name as varchar(1024)) else str end), cte.ID + 1 as ID
        from cte
        inner join Table1 t on cte.ID + 1 = t.ID
    )
    select DatabaseName, (case when str like ',%' then substring(str, 2, len(str)) else null end) as str
    from cte c
    where ID = (select max(ID) from cte where DatabaseName = c.DatabaseName)
    

提交回复
热议问题