如何使用T-SQL从具有类似标签的json获取特定值

时间:2019-04-11 19:22:34

标签: json sql-server-2016

我有一个nvarchar(max)列,其JSON blob的结构如下:

[
    {"QuestionName":"Question1", "AnswerValue":"123456"},
    {"QuestionName":"Question2", "AnswerValue":"987654"},
    {"QuestionName":"Question3", "AnswerValue":"951753"}
]

我要在基于集合的操作中执行此操作,因为我要撤回5万条记录。我想获得答案值where QuestionName = Question2

在上述情况下,我想返回987654。此值可能并非每次都在数组的完全相同的位置。

使用JSon时,我非常环保,更不用说在SQL Server中使用它了。我相信我想要的是

JSON_VALUE(MyJSonColumn, '???')

但我不确定如何真正获得所需的东西。

1 个答案:

答案 0 :(得分: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';

db<>fiddle demo