У меня есть этот JSON, и я хочу, чтобы все значения в keyPhrases
отображались в виде столбца в запросе TSQL. Вы знаете, как это можно сделать?
Желаемый результат:
JSON:
{"documents": [{"id": "778124772", "keyPhrases": ["banker", "good position", "friends", "family" ], "warnings": []}]}
Очень ценю вашу помощь.
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');
Какая версия SQL Server? Если вы не используете 2016+, я предлагаю не делать этого в SQL Server, используйте другой язык. если это 2016+, что вы пробовали и почему это не сработало, или какие исследования вы провели и чего не поняли? Существует множество ресурсов о том, как использовать функции T-SQL
OPENJSON
.