【发布时间】:2018-08-24 06:25:40
【问题描述】:
我想将一个字符串拆分成一个新表,我可以用它来加入原始表。请参阅代码以了解如何将数据存储在列中。 我已经
CREATE TABLE #tmpsplit
(
id INT IDENTITY(1,1)
, StringToSplit varchar(100)
)
INSERT INTO #tmpsplit VALUES ('Lable1:Value1|Lable2:Value2')
INSERT INTO #tmpsplit VALUES ('Lable1:ValueOne|Lable2:ValueTwo|Lable3:ValueThree')
我非常希望将其拆分为三列,ID、Lable、Value,如下所示:
id lable value
1 Lable1 Value1
1 Lable2 Value2
2 LableOneV ValueOne
2 LableTwo ValueTwo
2 LableThree ValueThree
我最好不使用游标,不使用 XML 技巧的变量来执行此操作。我想出了这个(我不知道如何为每条记录添加 ID)。
SELECT
SUBSTRING(t2.value,1,CHARINDEX(':',t2.value)-1) AS Lable
, SUBSTRING(t2.value,CHARINDEX(':',t2.value)+1,LEN(t2.value)) AS Value
FROM
(SELECT Cast ('<x>' + Replace(StringToSplit, '|', '</x><x>') + '</x>' AS XML) AS RawData FROM #tmpsplit) t1
CROSS APPLY
(SELECT y.value('.','varchar(100)') as value FROM RawData.nodes('x') as f(y)) t2
谢谢。
【问题讨论】:
-
你可以根据这个帖子split comma separated string into columns来做这个。
标签: sql sql-server