クエリ1:
SELECT ARRAY(select id from contacts where id = 0)::INT[],
ARRAY[]::INT[],
ARRAY(SELECT id FROM contacts WHERE id = 0)::INT[] = ARRAY[]::int[]
この結果を生成します:
int4 array ?column?
{} {} TRUE
クエリ2:
SELECT (ARRAY(SELECT id FROM contacts WHERE id = 0)::INT[]
& ARRAY(select id from contacts where id = 0)::INT[]),
ARRAY[]::INT[],
(ARRAY(SELECT id FROM contacts WHERE id = 0)::INT[]
& ARRAY(SELECT id FROM contacts WHERE id = 0)::INT[]) = ARRAY[]::int[]
異なる結果を生成します:
?column? array ?column?
{} {} FALSE
なぜ違いがあるのですか?
2番目のクエリのように、空の整数配列を2つの配列の共通部分の結果と比較する他の方法はありますか?