Postgresql 如何在psql中使用array contains value子句进行选择

Postgresql 如何在psql中使用array contains value子句进行选择,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,我有一个列arr,它的类型是array 我需要获取行,其中arr列包含值s 此查询: SELECT * FROM table WHERE arr @> ARRAY['s'] 给出了错误: 错误:运算符不存在:字符变化[]@>文本[] 为什么它不起作用 p、 我知道any()操作符,但是为什么@>不起作用呢?试试看 SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[] 比较两个阵列的安全壳。注意,这可能也适用于: SELECT

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

我需要获取行,其中
arr
列包含值
s

此查询:

SELECT * FROM table WHERE arr @> ARRAY['s']
给出了错误:

错误:运算符不存在:字符变化[]@>文本[]

为什么它不起作用

p、 我知道
any()
操作符,但是为什么
@>
不起作用呢?

试试看

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

比较两个阵列的安全壳。

注意,这可能也适用于:

SELECT * FROM table WHERE s=ANY(array)

这也避免了我需要强制转换到varchar,如
s@>数组['constant'::varchar]
,更短。这不会使用GIN索引,所以我不会使用它。如果我错了,请纠正我。文档:
SELECT * FROM table WHERE s=ANY(array)