Postgresql:如何在json数组上执行LIKE查询?

时间:2017-10-17 23:46:38

标签: json postgresql jsonb

我有一个表格,标签存储为JSONB列。像:

id   tags
---- ------------------------------
1    ["red", "blue"]
2    ["orange", "light pink"]
3    ["pink", "green"]

我想选择包含部分匹配模式的标记的行 - 在我的例子中,我想要带有空格的标记。像SELECT * FROM the_table WHERE tags LIKE '% %'这样的东西。将数组转换为文本几乎可以正常工作,但所有内容都匹配,因为Postgres在输出JSON中的逗号之后放置一个空格。

1 个答案:

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