我有一个带有jsonb数据类型列标签的表MessagesList。该列中的数据类似于[" abc"," xyz"]。我需要在列中搜索值' abc'
我的查询
select value from messageslist , jsonb_array_elements(messageslist.Tags) as elem
返回
"abc"
"xyz"
我需要在这个结果集中写一个条件,比如
where value ='abc'
答案 0 :(得分:3)
您需要使用jsonb_array_elements_text()
将每个标记作为文本值返回,而不是JSON值。
我也更喜欢为列定义别名,而不仅仅是jsonb_array_elements_text()
返回的派生表:
select e.tag
from messageslist as m,
jsonb_array_elements_text(m.tags) as e(tag)
where e.tag = 'abc'