我有以下 SQL 脚本:
DECLARE @temp table (
ID int IDENTITY(1, 1),
data nvarchar(100)
)
INSERT INTO @temp (data) VALUES ('a,b,c')
INSERT INTO @temp (data) VALUES ('d,e,f')
SELECT *
FROM @temp AS T
INNER JOIN
(SELECT *
FROM dbo.__StringSplit(T.data, ',', T.ID)) AS S
ON T.ID = S.RefID
在点击!执行后,我得到了这些:
Line 17 The multi-part identifier "T.data" could not be bound.
我也尝试了非加入版本并得到了同样的错误:
SELECT T.ID, S.Item AS dataItem
FROM @temp AS T, dbo.__StringSplit(T.data, ',', T.ID) AS S
WHERE T.ID = S.RefID
...
我所期望的是,我应该得到一个带有来自 @test.ID 的 ID 的表,并且 @test.data 中的每个逗号分隔值都被拆分为自己的记录,并将其值放入 dataItem 字段中。
我怎样才能做到这一点?
我需要使用游标吗?
我已将 dbo.__StringSplit 表值函数实现粘贴在http://pastebin.com/f7dd6350f
谢谢!