На странице Википедии для SQL есть несколько таблиц истинности о булевой логике в SQL. [1] Похоже, что страница Википедии является источником стандарта SQL: 2003.
Таблица истинности для оператора равенства (=) отличается от оператора IS из черновика SQL: 2003.
Кроме того, в статье Википедии отмечается, что «IS NULL» (<предикат null>) является особым случаем.
В SQL: 2003 кажется, что существует оператор "IS", который является обычным оператором, таким как AND, NOT и OR. Однако <нулевой предикат> все еще там.
Почему существует <нулевой предикат>, когда IS является обычным логическим оператором? Чтобы убедиться, что вы можете использовать конструкцию «IS NULL» с небулевыми значениями без приведения типов? Не рекомендуется использовать "= NULL"?
По-другому ли работает стандарт SQL: 2011?
[1]: Википедия по SQL
[2]: SQL: черновик 2011 года PDF страница 335
[3]: SQL: 2003 черновик PDF-страница 397