在 SQL Server 2008 的 split 函数中使用 join table 列

Use join table column in split function in SQL Server 2008

我有一个拆分函数,它在 SQL 中运行良好。

用户 table 有一列 experience,其中包含以逗号分隔的字符串作为值,如下所示

ID   |  Exp
---------------------------
1    | C#,WEBAPI,SQL
2    | ASP.Net,MVC,HTML,CSS
3    | HTML,CSS,JavaScript

我正在尝试:

Select 
    U.ID, B.Text
From 
    Users U, 
    Split(U.Exp, ',') B

因为我需要这样的结果:

ID   |  Exp
---------------------------
1    | C#
1    | WEBAPI
1    | SQL
2    | ASP.Net
2    | MVC
2    | HTML
2    | CSS
3    | HTML
3    | CSS
3    | JavaScript

知道如何在 join 函数中使用 join table 吗?

应该是这样的

Select U.ID, B.Text
From Users U
CROSS APPLY dbo.Split(U.Exp, ',') B

顺便说一句:OUTER APPLY 无论如何都会加入他们...

您正在寻找cross apply

Select U.ID, B.Text
From Users U cross apply
     dbo.Split(U.Exp, ',') B(Text);

如果要保留 U 中的所有行,即使 U.Exp 为空,则可以使用 outer apply.