Вы можете сделать это еще проще:
SELECT foo
FROM ...
WHERE (-1 IN (col1, col2, col3)) IS NOT NULL
Выражение IN вернет NULL
, если (и только если) есть хотя бы одно значение NULL
среди протестированных значений (и не соответствует).Таким образом, все выражение оценивается как ИСТИНА, если (и только если) нет NULL
.
Редактировать: Я должен исправить себя!Положительное совпадение остановит оценку и вернет TRUE
, даже если среди значений есть NULL
.Таким образом, вам нужно значение, которое гарантированно не будет в наборе.Например, 0, где все значения> 0 или -1, где все значения положительные или вы не можете использовать это выражение для этой цели.