Разделенные запятыми значения в нескольких строках в SQL Server - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть таблица, где она содержит данные в следующем формате enter image description here

Как этого добиться в MS SQL Server.

1 Ответ

0 голосов
/ 03 сентября 2018

Используется DelimitedSplit8K, поскольку требуется информация о порядковом положении (что-то STRING_SPLIT и многие другие сплиттеры не предоставляют). Ниже приведен псевдо-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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...