2016-11-03 13 views
0

jsonbデータ型の列タグを持つテーブルMessagesListがあります。列のデータは["abc"、 "xyz"]と同じです。私は値が「ABC」jsonb_array_elementsの後にwhere条件を追加することができません

私のクエリの列で検索する必要があり

select value from messageslist , jsonb_array_elements(messageslist.Tags) as elem 

これは私のような、すなわちこの結果セットに条件を記述する必要が

"abc" 
"xyz" 

返し

where value ='abc' 

答えて

3

各タグをJSON値ではなくテキスト値として返すには、jsonb_array_elements_text()を使用する必要があります。

Iはまた、同様に誘導されたテーブルだけでなく、カラムの別名を定義することを好む

そのjsonb_array_elements_text()戻り値:

select e.tag 
from messageslist as m, 
    jsonb_array_elements_text(m.tags) as e(tag) 
where e.tag = 'abc' 
関連する問題