如何在不知道父对象密钥的情况下使用SQL Server JSON查询属性值?

时间:2017-12-04 00:02:44

标签: json sql-server

在SQL Server中给出以下JSON,你如何获得" Foo"不知道父键的值(" John"和" Jane")?

declare @json nvarchar(max) = '{
    "John" : {
        "favoriteMovie": "Star Wars",
        "Foo": 42
    },
    "Jane : {
        "favoriteMovie": "Caddyshack",
        "Foo": 66
    }
}'

1 个答案:

答案 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