2017-10-17 21 views
0

タグがJSONB列として格納されたテーブルがあります。 Like:Postgresql:json配列でLIKEクエリを実行するには?

パターンに部分的に一致するタグを含む行を選択したいと思います。私の場合は、スペースが含まれたタグが必要です。 SELECT * FROM the_table WHERE tags LIKE '% %'のようなものです。配列をテキストにキャストすることはほとんどうまくいくが、Postgresは出力JSONにコンマの後にスペースを入れるため、すべてが一致することを除いてほとんど機能する。

答えて

1

利用機能jsonb_array_elements_text().

with my_table(id, tags) as (
values 
    (1, '["red", "blue"]'::jsonb), 
    (2, '["orange", "light pink"]'), 
    (3, '["pink", "green"]') 
) 

select * 
from my_table, jsonb_array_elements_text(tags) 
where value like '% %'; 

id |   tags   | value  
----+--------------------------+------------ 
    2 | ["orange", "light pink"] | light pink 
(1 row) 
関連する問題