这让我疯了,我不明白我的做法有什么不妥。
我在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');
我以strict
,SELECT 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.
我做错了什么?我的结构出了什么问题?
答案 0 :(得分:3)
JSON_QUERY
只会提取对象或数组。您正尝试提取单个值,因此您需要使用JSON_VALUE
。例如:
SELECT JSON_VALUE(@jsonResponse, '$.result[0].txtFullName');