在SQL Server中给出以下JSON,你如何获得" Foo"不知道父键的值(" John"和" Jane")?
declare @json nvarchar(max) = '{
"John" : {
"favoriteMovie": "Star Wars",
"Foo": 42
},
"Jane : {
"favoriteMovie": "Caddyshack",
"Foo": 66
}
}'
答案 0 :(得分:0)
这是一种方法是使用XML
节点方法来获得所需的结果。但是,这种方法很奇怪,但它会有所帮助
select
ltrim(replace(replace(a.value('.', 'nvarchar(max)'), char(10), ''), '}', '')) json from
(
select cast('<m>'+replace(@json, ',', '</m><m>')+'</m>' as xml) as json
)a cross apply json.nodes ('/m') as json(a)
where a.value('.', 'varchar(max)') like '%foo%'
结果:
json
"Foo": 42
"Foo": 66