MSSQL JSON_VALUE匹配Array中的任何Object

时间:2017-06-22 00:19:54

标签: sql-server json

我有一个带有JSON文本字段的表:

create table breaches(breach_id int, detail text);
insert into breaches values
( 1,'[{"breachedState": null}, 
      {"breachedState": "PROCESS_APPLICATION",}]')

我正在尝试在构建JSON解析函数中使用MSSQL来测试JSON数组中的任何对象是否具有匹配的成员值。

如果detail字段是单个JSON对象,我可以使用:

select * from breaches 
 where JSON_VALUE(detail,'$.breachedState') = 'PROCESS_APPLICATION'

但它是一个数组,我想知道任何对象是否有breachedState = 'PROCESS_APPLICATION'

这是否可以使用MSSQL的JSON函数?

1 个答案:

答案 0 :(得分:0)

您可以使用函数OPENJSON检查每个对象,尝试此查询:

select * from breaches 
where exists
(
    select * 
    from
    OPENJSON (detail) d
    where JSON_VALUE(value,'$.breachedState') = 'PROCESS_APPLICATION'
)

顺便说一句,在插入查询中有一个额外的“,”应该是:

insert into breaches values
( 1,'[{"breachedState": null}, 
      {"breachedState": "PROCESS_APPLICATION"}]')