У меня есть следующая таблица:
id | row_2
---------+---------------
1 | {t,NULL}
2 | {NULL}
Я хочу сохранить строки, которые являются истинными или пустыми, и отфильтровать строки, в которых массив содержит ложное значение. Я сделал это:
SELECT
*
FROM
my_table t
WHERE
not (false = ANY (t.row_2));
Это не работает, потому что сравнение с нулевым значением приводит к нулю. То есть этот ...
SELECT not false = any (ARRAY[true, true]);
SELECT not false = any (ARRAY[false, false]);
... выводит значения true и false соответственно (как и ожидалось). Но это ...
SELECT not false = any (ARRAY[true, null]);
... вывод NULL
.