Поскольку, что x
Выражение
x IS NOT NULL
неравноNOT(x IS NULL)
, как имеет место в 2VL
(кавычка из этого ответа, который заключает Fabian Pascal Practical Issues в кавычки в управлении базой данных - Ссылке для Думающего Практика - около конца того ответа),
Мое предположение когда Это предположение было неправильным.x IS NULL
является ПУСТЫМ, но я не могу предположить, когда это было бы (т.е. Я не проверил стандарт SQL).
Из того, что я прочитал, Фабиан Паскаль имеет в виду не скалярное значение по сравнению с Null, а редко реализуемый тип ROW. В стандарте идея заключалась в том, что вы могли сравнить таблицу (строк), используя IS NULL
, чтобы определить, все ли значения установлены на значение NULL. Таким образом, X IS NULL
будет означать, что все значения были установлены на значение NULL, X IS NOT NULL
будет означать, что никакие значения не были установлены на значение NULL, а NOT (X IS NULL)
означало бы, что не все значения были установлены в значение NULL или, другими словами, существовало по крайней мере одно значение, не установленное в NULL. Конечно, здесь я слегка наступаю на плечи гигантов, но именно так я интерпретирую его заявление.
x IS NULL
никогда не будет NULL
, поэтому они одинаковы для всех x
Таблица истинности:
+--------+-------------+---------+--------------+
| 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
)