Получить значения в списке в JSON с помощью TSQL

У меня есть этот JSON, и я хочу, чтобы все значения в keyPhrases отображались в виде столбца в запросе TSQL. Вы знаете, как это можно сделать?

Желаемый результат:

ИДЕНТИФИКАТОР ключевые слова 778124772 банкир, хорошее положение, друзья семьи

JSON:

{"documents": [{"id": "778124772", "keyPhrases": ["banker", "good position", "friends", "family"     ], "warnings": []}]}

Очень ценю вашу помощь.

Какая версия SQL Server? Если вы не используете 2016+, я предлагаю не делать этого в SQL Server, используйте другой язык. если это 2016+, что вы пробовали и почему это не сработало, или какие исследования вы провели и чего не поняли? Существует множество ресурсов о том, как использовать функции T-SQL OPENJSON.

Thom A 10.12.2020 23:55
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

OPENJSON может помочь вам, поэтому потенциальное решение может быть таким:

DECLARE @json NVARCHAR(MAX) = '{"documents": [{"id": "778124772", "keyPhrases": ["banker", "good position", "friends", "family"     ], "warnings": []}]}';

SELECT 
        R.id as ID, 
        (SELECT STRING_AGG(value, ', ') FROM OPENJSON(R.kp)) as keyPhrases
FROM OPENJSON(@json, '$.documents') 
     WITH (id bigint, kp nvarchar(max) '$.keyPhrases' as JSON) R

Просто знайте, что OPENJSON и STRING_AGG — это функции, относящиеся к более новым версиям SQL Server.

Вы можете использовать OPENJSON() и STRING_AGG() следующим образом:

DECLARE @JSON NVARCHAR(MAX) = N'{"documents": [{"id": "778124772", "keyPhrases": ["banker", "good position", "friends", "family"     ], "warnings": []}]}';

SELECT JSON_VALUE(T.Value, '$.id') AS ID,
       STRING_AGG(TT.Value, ',') AS keyPhrases
FROM OPENJSON(@JSON, '$.documents') AS T
CROSS APPLY OPENJSON(Value, '$.keyPhrases') AS TT
GROUP BY JSON_VALUE(T.Value, '$.id');

Вот db<>рабочий пример

Другие вопросы по теме