Запрос 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
Почему разница?
Есть ли другой способ сравнить пустой целочисленный массив с результатом пересечения двух массивов, как во втором запросе?