2017-09-01 22 views
3

トピックという文字列のリテラル配列と呼ばれるpostgresテーブルにjsonbカラムがあります。私はstackoverflowのとで探してる%lift%postgres jsonbカラムのファジー文字列

他のすべてのクエリに一致することになる多くの間でこのレコードを見つける必要がある

['healthcare', 'fitness', 'gains', 'doyouevenliftbro']

例:レコードがトピック値のためにこれを持っているかもしれませんpg docsは完全な文字列としてdoyouevenliftbroとマッチすることができます。あるいは、json_to_recordset()などから変換された場合は正規表現マッチを行うことができますが、JSON内の参照プロパティに移動します。ただそれだけで私を回避している単純な構文だと思っています。ありがとう!

答えて

2

json_array_elementsを使用して、jsonの配列をセットからアンネストすることができます。それがセットになると、like演算子を適用してサブクエリーにスローすることができます。

select * 
from your_table 
where exists (
    select * 
    from json_array_elements(your_table.topics::json) 
    where value::text like '%lift%' 
); 

EDIT:もっとぶっきらぼう完了、あなたはちょうどそれに対して、テキストと一致として全体トピック配列をキャストしたらどう?

select * 
from your_table 
where topics::text like '%lift%'; 
+0

これは有望です - 私は今日それを試し、私が確認するときにこれを更新します。ありがとう! – AlienWebguy

関連する問題