我有以下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
然后单击!Execute之后,我得到了这些:
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
…
我所期望的是,我应该获得一个ID,其ID来自@ test.ID的表,并且@
test.data中每个逗号分隔的值都拆分成自己的记录,并将其值放入dataItem字段中。
我该怎么做?
我需要使用游标吗?
我在http://pastebin.com/f7dd6350f粘贴了dbo .__
StringSplit表值函数实现
谢谢!
在SQL2000中,您需要游标。在SQL2005 / 2008中,可以使用CROSS APPLY填充;可能像下一个(目前无法测试):
SELECT T.ID, S.Item AS dataItem
FROM @temp AS T CROSS APPLY dbo.__StringSplit(T.data, ',', T.ID) AS S
编辑 -我在CROSS APPLY上找到了此页面,然后想到了:
SELECT T.ID, S.Item AS dataItem
FROM @temp AS T
CROSS APPLY
dbo.__StringSplit(T.data, ',', T.ID) AS S
WHERE T.ID = S.RefID
解决了我的问题:-)
问题内容: 我想知道您将如何解决相反的问题:将逗号分隔的字符串拆分为数据行: 可以说我有表: 并想将数据插入表中 问题答案: 这个问题的解决方案记录在这里,包括这个小gem:
问题内容: 我如何将字符串分成多行,如下所示? 问题答案: Swift 4包括对多行字符串文字的支持。除换行符外,它们还可以包含未转义的引号。 较早版本的Swift不允许您在多行上使用单个文字,但可以在多行上将文字添加在一起:
问题内容: 我有一个像这样的字符串: 现在指示键值对,而将其分开。我想将键值对添加到地图。 我可以使用以下方法实现此目的: 但是,有一种有效的方法吗? 我觉得代码效率低下,因为我使用了2个对象并两次调用了该函数。另外,我正在使用,如果没有值,可能会引发。 问题答案: 您可以使用以下代码对split()进行一次调用,并对String进行一次传递。但是,它当然首先假定字符串有效: 上面的代码 可能 比
问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:
我有一个字符串和一个ArrayList。字符串中有几个单词,用空格隔开,例如“firstword second third”。我想将字符串拆分为几个部分,并将“piece”字符串添加到ArrayList中。
理想情况下,我希望这些新列也被命名。