如何在 psql 中使用数组包含值子句进行选择

我有一列 arr,它的类型是 array

I need to get rows, where arr column contains value s

这个问题:

SELECT * FROM table WHERE arr @> ARRAY['s']

给出了错误:

错误: 操作符不存在: 字符变化[]@> text []

为什么它不工作?

另外,我知道 any()操作员,但是为什么 @>不工作?

146555 次浏览

试试看

SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[]
SELECT * FROM table WHERE arr && '{s}'::text[];

比较两个数组的包容性。

请注意,这也可能有效:

SELECT * FROM table WHERE s=ANY(array)