2017-06-22 62 views
1

任何對象我有一個表,一個JSON文本字段:MSSQL JSON_VALUE以匹配陣列

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

我試圖使用MSSQL的在建JSON解析功能,以測試在一個JSON陣列中的任何對象是否具有一個匹配的成員值。

如果detail場是一個JSON對象,我可以使用:

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

,但它是一個數組,我想知道是否有任何對象已breachedState = 'PROCESS_APPLICATION'

這可能使用MSSQL的JSON功能?

回答

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"}]')