2017-05-24 15 views
0

配列の一部であるオブジェクト内のキーに基づいて特定の値を取得するにはどうすればよいですか?どこ私は、PostgreSQL:全文検索用のjsonb配列内のオブジェクトの値を取得

SELECT addresses ->> 'address' FROM foo 

、その後、フルテキスト検索で結果を使用します。私は、私は何をしてみたいことのようなものである

addresses (JSONB) 
--------- 
[{"address":"[email protected]", "type": "home"}, {"address":"[email protected]", "type": "work"}] 

DB

私のPostgresの内部でjsonbとして9.6を私のJSONデータを保存します以下のような特定の電子メール・アドレスの検索:

SELECT * FROM foo WHERE 
to_tsvector('simple', CAST(addresses ->>'address' as text)) @@ to_tsquery('abc:*'); 

私は最初のクエリを実行したときに私が得るすべては、次のとおりです。(NULL)

答えて

1

あなたがjsonb_array_elements():

with foo(addresses) as (
values 
    ('[{"address":"[email protected]", "type": "home"}, {"address":"[email protected]", "type": "work"}]'::jsonb) 
) 

select value->>'address' as address 
from foo, 
jsonb_array_elements(addresses) 
where to_tsvector('simple', value->>'address') @@ to_tsquery('abc:*'); 

    address 
------------- 
[email protected] 
(1 row) 
+0

を使用してJSON配列をネスト解除すべきは、あなたの答えは私のために働いた、ありがとうございます。 –

関連する問題