逗号将值分隔为SQL Server中的多行

问题描述 投票:0回答:1

我有一个表格,其中包含以下格式enter image description here的数据

如何在MS SQL Server中实现此目的。

sql-server azure-sql-database
1个回答
1
投票

这使用DelimitedSplit8K,因为需要关于序数位置的信息(STRING_SPLIT和许多其他分离器不提供的东西)。以下是Pseudo SQL,因为OP提供了图像,而不是文本数据:

SELECT {YourColumns}
FROM YourTable YT
     CROSS APPLY dbo.DelimitedSplit8K(YT.Qualification,',') DSq
     CROSS APPLY dbo.DelimitedSplit8K(YT.Instituion,',') DSi
WHERE DSq.ItemNumber = DSi.ItemNumber;

然而,正如评论中提到的,这里的真正答案是修复数据模型。

另一种方法是使用OPENJSON。这是我最近才引入的内容,我无法访问SQL Server 2016实例来测试它(我已经使用SQL Fiddle来测试它运行,但不是因为同样的原因提供的图像以上)。我相信这也应该实现你的目标:

SELECT OJq.[value], OJi.[Value]
FROM YourTable YT
     CROSS APPLY (SELECT ca.[Key], ca.[value]
                  FROM OPENJSON('["' + REPLACE(YT.Qualification,',','","') + '"]') ca) OJq
     CROSS APPLY (SELECT ca.[Key], ca.[value]
                  FROM OPENJSON('["' + REPLACE(YT.Instituion,',','","') + '"]') ca) OJi
WHERE OJq.[Key] = OJi.[Key];
© www.soinside.com 2019 - 2024. All rights reserved.