Логические операции и NULL
NULL AND TRUE = NULL
NULL AND FALSE = FALSE
NULL OR TRUE = TRUE
NULL OR FALSE = NULL
NOT NULL = NULL
Чем обусловлено такое странное поведение?
NULL AND FALSE = FALSE => 0 * 0 = 0 (false)
NULL OR TRUE = TRUE => 0 + 1 = 0 (true)
NULL OR FALSE = NULL = 0 + 0 = 0 (null / false)
NOT NULL = NULL => хз как NOT мат операцией представить
NULL AND FALSE = FALSE => 0 * 0 = 0 (false)
NULL OR TRUE = TRUE => 0 + 1 = 0 (true)
NULL OR FALSE = NULL = 0 + 0 = 0 (null / false)
NOT NULL = NULL => хз как NOT мат операцией представить
Все таки не совсем корректно здесь NULL заменять нулем. NULL - это неопределенное значение (неизвестное значение, любое значение).
Таким образом:
NULL AND FALSE = FALSE, т.к. не важно, что собой представляет NULL, т.к. AND для любого значения с FALSE даст FALSE.
NULL OR TRUE = TRUE. Аналогично. OR при любом значении с TRUE даст TRUE.
NULL OR FALSE = NULL, т.к. здесь все зависит от того, что есть NULL, поэтому в общем случае результат операции неизвестнен - NULL
NOT NULL - так же зависит от того, что есть NULL и также в общем случае результат операции - неопределенность.
NULL AND FALSE = FALSE => 0 * 0 = 0 (false)
NULL OR TRUE = TRUE => 0 + 1 = 0 (true)
NULL OR FALSE = NULL = 0 + 0 = 0 (null / false)
NOT NULL = NULL => хз как NOT мат операцией представить
тогда если NULL считать за аналогичное значение FALSE ---> NOT NULL = NOT FALSE = TRUE. И правда странно, или я чего то не понЯл? ))
upd.
Пока я писал, Оракул расставил все точки над i. ))