我有一个表格,标签存储为JSONB列。像:
id tags
---- ------------------------------
1 ["red", "blue"]
2 ["orange", "light pink"]
3 ["pink", "green"]
我想选择包含部分匹配模式的标记的行 - 在我的例子中,我想要带有空格的标记。像SELECT * FROM the_table WHERE tags LIKE '% %'
这样的东西。将数组转换为文本几乎可以正常工作,但所有内容都匹配,因为Postgres在输出JSON中的逗号之后放置一个空格。
答案 0 :(得分:1)
使用功能jsonb_array_elements_text().
with my_table(id, tags) as (
values
(1, '["red", "blue"]'::jsonb),
(2, '["orange", "light pink"]'),
(3, '["pink", "green"]')
)
select *
from my_table, jsonb_array_elements_text(tags)
where value like '% %';
id | tags | value
----+--------------------------+------------
2 | ["orange", "light pink"] | light pink
(1 row)