如何查询在 postgres 中以字符串形式存在的数组?

How to query array which is present as string in postgres?

我有一个名为 table 的 table,列名为 column,数据类型为 text,值类似于“["1","2"]”。

我需要获取所有以“1”作为元素之一的记录。

select * 
from table 
where column.....?

where 子句应该如何设置?

我认为您可以在 jsonb 上使用 ? 运算符,键入:

select *
from (
    select '["1","2"]' union all
    select '["0"]'
) as a(data)
where
    a.data::jsonb ? '1'

一般来说,我会考虑将您的数据存储为 jsonb 而不是字符串。

db<>fiddle example

只需使用LIKE。保留双引号以传递 1,但避免包含该数字的其他数字。

select * 
from table 
where column like '%"1"%'