На странице Wikipedia для SQL есть несколько таблиц истинности о логической логике в SQL. [1] На странице Википедии есть источник SQL: 2003.Стандартный SQL-логический оператор IS против оператора equals (=)
Таблица истинности оператора equals (=) отличается от оператора IS от проекта SQL: 2003.
Кроме того, статья Википедии отмечает, что «IS NULL» (< null предикат>) является особым случаем.
В SQL: 2003 кажется, что существует «IS», который является регулярным оператором типа AND, NOT и OR. Тем не менее, нулевой предикат < все еще существует.
Почему нулевой предикат < существует, когда IS является регулярным булевым оператором? Следует ли убедиться, что вы можете использовать конструкцию «IS NULL» с небулевыми значениями без когерентности типа? Не рекомендуется ли использовать «= NULL»?
Работает ли стандарт SQL: 2011 по-другому?
[1]: Wikipedia on SQL
[2]: SQL:2011 draft PDF страница 335
[3]: SQL:2003 draft PDF страница 397
Ничего равно NULL, даже не NULL. Таким образом, 'NULL = NULL',' NULL = 1' и '1 = NULL' являются ложными (ну, действительно, все они' NULL'/'Unknown ', который не является true *, и поэтому действительно близок к тому, чтобы быть ложным). Но 'NULL IS NULL' - это правда. – MatBailie
Я еще не читал ваших ссылок. 'SQLite' имеет оператор' IS', который является взаимозаменяемым с '=', за исключением того, что он имеет семантику, которая 'NULL = NULL'. –
На что мы должны смотреть на странице 335? Уверены, у вас есть номер правой страницы? Речь идет о '' –