我有一个 API 以以下形式返回数据:
"cars" : {"VW":{"name":"Volkswagen","country":"Germany"},
"GM":{"name":"General Motors","country":"USA"},
"RR":{"name":"Rolls Royce","country":"UK"}
}
使用
JSON_VALUE
,如何引用两个字符指示符“VW”、“GM”等?我可以使用路径
$.cars
获取名称和国家/地区但看不到如何获取(未命名)字段。 API 不是我的,所以我无法规定格式。
最佳答案
这个查询会返回什么?
set @json = N'
["cars" : {
"VW":{
"name":"Volkswagen",
"country":"Germany"},
"GM":{
"name":"General Motors",
"country":"USA"},
"RR":{
"name":"Rolls Royce",
"country":"UK"}
}]';
select *
from OPENJSON( @json )
你能分享一下输出吗?
我很抱歉给出这个答案,但评论太长了,这个查询可能有助于找到 OP 想要获取的元素。
编辑#1
这个:
Declare @js nvarchar(4000) = N'{"cars" : {
"VW":{"name":"Volkswagen","country":"Germany"},
"GM":{"name":"General Motors","country":"USA"},
"RR":{"name":"Rolls Royce","country":"UK"}}}'
SELECT [key]
FROM OPENJSON (@js,'$.cars')
会给你你需要的值(value)。
编辑#2
你可以引用这个值:
SELECT p1.[key],
p2.[key],
p2.[value]
FROM OPENJSON (@js, '$.cars') as p1
CROSS APPLY (
SELECT *
FROM OPENJSON ([value], '$')
) p2
WHERE p1.[key] = 'VW'
输出:
key key value
--- ------- ----------
VW name Volkswagen
VW country Germany
(2 row(s) returned)
关于sql-server - SQL Server 2016 JSON_VALUE 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39543633/