我在postgres表中有一个名为 topics 的jsonb列,它是一个字符串的文字数组。示例记录可能包含主题值:
['healthcare', 'fitness', 'gains', 'doyouevenliftbro']
我需要在许多匹配%lift%
我在stackoverflow上找到的所有其他查询和pg文档可以作为完整字符串与doyouevenliftbro
匹配,或者如果从json_to_recordset()
或其他任何内容转换,则可以执行正则表达式匹配,然后他们继续引用JSON中的属性,这是没有的。希望它简单的语法只是回避我。谢谢!
答案 0 :(得分: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%'
);
编辑:更直截了当地说,如果您只是将整个主题数组转换为文本并与之匹配,该怎么办?
select *
from your_table
where topics::text like '%lift%';