Когда `x IS NOT NULL` не совпадает с` NOT (x IS NULL) `
Для чего x
есть
Выражение x IS NOT NULL
равно, не равному NOT(x IS NULL)
, как в случае с 2VL
(цитата из этого ответа, в которой цитируются практические вопросы Фабиана Паскаля в области управления базами данных - справочник для практикующего мышления - в конце этого ответа)
Мое предположение, когда x IS NULL
равно NULL, но я не могу догадаться, когда это будет (например, я не проверил стандарт SQL). Это предположение было неверным.
Ответы
Ответ 1
Из того, что я читал, Фабиан Паскаль не имеет в виду скалярное значение по сравнению с Null, но редко реализуемым типом ROW. В стандарте идея заключалась в том, что вы можете сравнить таблицу (строк) с помощью IS NULL
, чтобы определить, были ли все значения установлены на значение NULL. Таким образом, X IS NULL
будет означать, что все значения были установлены в значение NULL, X IS NOT NULL
означало бы, что никакие значения не были установлены в значение NULL, а NOT (X IS NULL)
означало бы, что не все значения были установлены в значение NULL или, сказал другой способ, существовало хотя бы одно значение, не установленное в NULL. Конечно, я нахожусь на плечах гигантов здесь, но это то, как я интерпретирую его выражение.
Ответ 2
x IS NULL
никогда не будет NULL
, поэтому они одинаковы для всех x
Таблица истины ahoy:
+--------+-------------+---------+--------------+
| x |x IS NOT NULL|x IS NULL|NOT(x IS NULL)|
+--------+-------------+---------+--------------+
|NULL | FALSE | TRUE | FALSE |
|NOT NULL| TRUE | FALSE | TRUE |
+--------+-------------+---------+--------------+
Обратите внимание, что столбцы два и четыре одинаковы для всех потенциальных значений x
(либо NULL
, либо NOT NULL
)