2017-05-02 12 views
1

PostgresのJSONB列の任意のキーで特定の値を検索できますか? In the documentation私は例を見ることができません。 JSONB列でPostgresとjsonb - 任意のキーで値を検索

値の例:

{ 
    a: 1, 
    b: 2, 
    c: 3 
} 

は、私はどこにでも値として1を持つすべてのレコードを検索します。注:現時点では、a, b, c以外のキーが存在しない可能性があります。 jsonb_each_text

+0

トップレベル?どこでも深い? –

+0

jsonbテキストの例を投稿できますか? – McNets

+0

@VaoTsunトップレベル – pmichna

答えて

3

use値、McNetsの前のサンプルに基づいて、試料,:

t=# select * from json_test join jsonb_each_text(json_test.data) e on true 
where e.value = '1'; 
id |     data     | key | value 
----+--------------------------------------+-----+------- 
    1 | {"a": 1}        | a | 1 
    3 | {"a": 1, "b": {"c": "d", "e": true}} | a | 1 
(2 rows) 
1

使用json_each_text()

with my_data(id, jdata) as (
values 
    (1, '{ "a": 1, "b": 2, "c": 3}'::json), 
    (2, '{ "j": 4, "k": 5, "l": 6}'::json), 
    (3, '{ "x": 1, "y": 2, "z": 3}'::json) 
) 

select id, jdata 
from my_data, 
lateral json_each_text(jdata) 
where value::int = 1 

id |   jdata   
----+--------------------------- 
    1 | { "a": 1, "b": 2, "c": 3} 
    3 | { "x": 1, "y": 2, "z": 3} 
(2 rows)  
関連する問題