如何使用数组中的select包含psql中的value子句

OTA*_*TAR 75 postgresql postgresql-9.2

我有arr 类型的列array.

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

这个查询:

SELECT * FROM table WHERE arr @> ARRAY['s']
Run Code Online (Sandbox Code Playgroud)

给出错误:

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

为什么不起作用?

ps我知道any()运算符,但为什么不@>工作?

小智 102

尝试

SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[]
Run Code Online (Sandbox Code Playgroud)

  • 文档:https://www.postgresql.org/docs/9.1/functions-array.html (2认同)

Aet*_*und 48

请注意,这也可能有效:

SELECT * FROM table WHERE s=ANY(array)
Run Code Online (Sandbox Code Playgroud)

  • 这也阻止了我需要转换为varchar,就像`s> @> ARRAY ['constant':: varchar]`一样,更短. (3认同)

vol*_*ron 15

SELECT * FROM table WHERE arr && '{s}'::text[];
Run Code Online (Sandbox Code Playgroud)

比较两个数组以进行收容.