此查询返回什么?
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')
会给你重视你的需要。
编辑#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)
这有助于回答问题? – GSerg
SEDE在SQL Server 2016上,所以你可以在这里访问它https://data.stackexchange.com/stackoverflow/query/540682 –
@MartinSmith我相信OP想要得到键列表(“VM”,“GM” ,“RR”)。 – GSerg