我有一个带有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函数?
答案 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"}]')