2017-06-22 10 views
1

で任意のオブジェクトを一致させるために、私はJSONテキストフィールドを持つテーブルがある:MSSQL JSON_VALUEは、アレイ

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

私はJSON配列内の任意のオブジェクトが持っているかどうかをテストするために、ビルドJSON解析関数でMSSQLのを使用しようとしています一致するメンバ値

detailフィールドは、単一のJSONオブジェクトだった場合、私は使用することができます

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

が、それは配列だし、私は、任意のオブジェクトがbreachedState = 'PROCESS_APPLICATION'

を持っているかどうかを知りたいMSSQLのJSONを使用して、このことが可能です機能?あなたはこのクエリを試し、各オブジェクトをチェックするために、関数OPENJSONを使用することができます

答えて

0

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

はところで、余分がある "" あなたのINSERTクエリでは、それは次のようになります。

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