在SQL Server 2008中的split函数中使用连接表列

时间:2016-11-14 03:07:58

标签: sql sql-server-2008 user-defined-functions

我有一个在SQL中运行良好的分割功能。

Users表有一列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

如何在连接函数中使用连接表?

2 个答案:

答案 0 :(得分:1)

这应该是这样的

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

顺便说一下:OUTER APPLY无论如何都会加入所有这些......

答案 1 :(得分:1)

您正在寻找cross apply

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

如果您想将U中的所有行保留为U.Exp为空,那么您将使用outer apply