#json #sql-server-2016
#json #sql-server-2016
Вопрос:
У меня есть nvarchar(max)
столбец с большим двоичным объектом json, структурированным следующим образом:
[
{"QuestionName":"Question1", "AnswerValue":"123456"},
{"QuestionName":"Question2", "AnswerValue":"987654"},
{"QuestionName":"Question3", "AnswerValue":"951753"}
]
Я хотел бы сделать это в операции на основе набора, поскольку я извлекаю более 50 тыс. записей. Я хотел бы получить значение ответа where QuestionName = Question2
.
В приведенном выше случае я хотел бы вернуть 987654. Это значение может не находиться в одном и том же месте массива каждый раз.
Я очень зеленый при работе с JSon, не говоря уже об использовании его в SQL Server. Я считаю, что я хочу что-то вроде
JSON_VALUE(MyJSonColumn, '???')
но я не уверен, как на самом деле получить то, что мне нужно.
Комментарии:
1. Эта часть документов Microsoft, похоже, охватывает ваш вопрос.
Ответ №1:
Вы могли бы использовать OPENJSON
:
SELECT a.questionName, a.answerValue
FROM t
CROSS APPLY OPENJSON(col)
WITH(QuestionName VARCHAR(100) N'$."QuestionName"', AnswerValue INT N'$."AnswerValue"') AS a
WHERE questionName = 'Question2';