Как получить конкретное значение из JSON с аналогичными тегами с T-SQL - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть столбец 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 Ответ

1 голос
/ 11 апреля 2019

Вы можете использовать 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';

db <> fiddle demo

...