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


96

我有arr 类型的列array

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

该查询:

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

给出错误:

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

为什么不起作用?

ps我知道any()运算符,但是为什么不起作用@>

Answers:



65

请注意,这也可能起作用:

SELECT * FROM table WHERE s=ANY(array)

4
而且这也使我不必转换为varchar s @> ARRAY['constant'::varchar],更短。
安德鲁·贝克

这不会使用GIN索引,所以我会使用它。如果我错了,请纠正我
GorillaApe '19

17
SELECT * FROM table WHERE arr && '{s}'::text[];

比较两个数组是否包含。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.