为什么JSON_QUERY发回空值?

时间:2018-06-14 16:47:33

标签: json sql-server

这让我疯了,我不明白我的做法有什么不妥。

我在SQL中生成一个JSON对象:

    select @output = (  
         select distinct lngEmpNo, txtFullName
         from tblSecret
         for json path, root('result'), include_null_values
    )

我得到这样的结果:

{"result":[{"lngEmpNo":696969,"txtFullName":"Clinton, Bill"}]}

ISJSON()确认它是有效的JSON,JSON_QUERY(@OUTPUT, '$.result')将返回JSON对象的数组[]部分...很酷!

但是,我尝试使用JSON_QUERY来提取特定值:

这会给我一个NULL值。 为什么??????? 我已尝试使用[0],没有[0],当然还有txtFullName[0]

SELECT JSON_QUERY(@jsonResponse, '$.result[0].txtFullName');

我以strictSELECT JSON_QUERY(@jsonResponse, 'strict $.result[0].txtFullName');为前缀,它告诉我:

Msg 13607, Level 16, State 4, Line 29
JSON path is not properly formatted. Unexpected character 't' is found at 
position 18.

我做错了什么?我的结构出了什么问题?

1 个答案:

答案 0 :(得分:3)

JSON_QUERY只会提取对象数组。您正尝试提取单个,因此您需要使用JSON_VALUE。例如:

SELECT JSON_VALUE(@jsonResponse, '$.result[0].txtFullName');