【发布时间】:2014-12-03 14:38:32
【问题描述】:
在 Postgres 9.3 中有以下设置:
CREATE TABLE t (id INTEGER);
INSERT INTO t VALUES (1), (2), (3);
我正在将这些值聚合到数组中(不要问为什么,实际设置非常复杂,所以我只需要这种方法)。
现在我需要检查某个整数是否属于数组。试过这个:
SELECT 1=ANY((SELECT array_agg(id) FROM t))
出现错误:
ERROR: operator does not exist: integer = integer[]
LINE 1: SELECT 1=ANY((SELECT array_agg(id) FROM t))
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
经过一些实验找到了可行的解决方案:
SELECT 1=ANY((SELECT array_agg(id) FROM t)::integer[])
为什么 postgres 要求我将 integer[] 转换为 integer[]?没有意义。
【问题讨论】:
标签: arrays postgresql casting any