在 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
.
我有一个拆分函数,它在 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
.