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

Postgresql: How to perform LIKE query on a json array?

我有一个 table,标签存储为 JSONB 列。喜欢:

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

我想要 select 包含与模式部分匹配的标签的行 -- 在我的例子中,我想要其中包含 space 的标签。类似于 SELECT * FROM the_table WHERE tags LIKE '% %'。将数组转换为文本几乎可以工作,除了一切都匹配,因为 Postgres 在输出 JSON.

逗号后放置了 space

使用函数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)