无法在jsonb_array_elements之后添加where条件

时间:2016-11-03 11:53:41

标签: sql json postgresql

我有一个带有jsonb数据类型列标签的表MessagesList。该列中的数据类似于[" abc"," xyz"]。我需要在列中搜索值' abc'

我的查询

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

返回

"abc"
"xyz"

我需要在这个结果集中写一个条件,比如

where value ='abc'

1 个答案:

答案 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'