在 SQL Server 2008 的拆分函数中使用连接表列
Posted
技术标签:
【中文标题】在 SQL Server 2008 的拆分函数中使用连接表列【英文标题】:Use join table column in split function in SQL Server 2008 【发布时间】:2016-11-14 03:07:58 【问题描述】:我有一个在 SQL 中运行良好的 split 函数。
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
知道如何在join函数中使用join表吗?
【问题讨论】:
【参考方案1】:您正在寻找cross apply
:
Select U.ID, B.Text
From Users U cross apply
dbo.Split(U.Exp, ',') B(Text);
如果您想保留U
中的所有行,即使U.Exp
为空,那么您将使用outer apply
。
【讨论】:
【参考方案2】:应该是这样的
Select U.ID, B.Text
From Users U
CROSS APPLY dbo.Split(U.Exp, ',') B
顺便说一句:OUTER APPLY
无论如何都会加入他们所有人...
【讨论】:
总是报错:Msg 4104, Level 16, State 1, Line 5 无法绑定多部分标识符“U.Exp”。我已经通过使用 , 代替交叉连接(两者相同)使用相同的查询 应该改为CROSS APPLY
吗?以上是关于在 SQL Server 2008 的拆分函数中使用连接表列的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2008 T-SQL UDF Split() 剪裁
拆分字符串并为 SQL Server 2008 R2 中表中的所有记录填充表