有下列設置了在Postgres 9.3:不必要的postgres數組轉換?
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的要求我投整數[]整數[]?沒有意義。