Это все хорошо. Почти любая операция с NULL
возвращает NULL
, включая =
, <>
и NOT
.
Но давайте разберем это последнее where
:
where not (1 = 2 and 5 = null);
совпадает с:
where not (FALSE and NULL)
Ну, AND
возвращает FALSE
, если любой из операндов равен FALSE
- даже если другие * NULL
. Посмотрите на это с другой стороны, независимо от того, является ли NULL
ИСТИНА или ЛОЖЬ, выражение FALSE
.
Следовательно, результат такой же, как:
where TRUE