С ANSI_NULLS OFF
, NULL = NULL
оценивается как TRUE
.
С ANSI_NULLS ON
(по умолчанию), NULL = NULL
оценивается как NULL
.
NULL IS NULL
всегда оценивается как TRUE
.
Однако в MySQL невозможно отключить ANSI_NULLS. Вы, вероятно, думаете о MS SQL Server.
Будущие версии MS SQL Server не будут поддерживать ANSI_NULLS OFF
, поэтому я бы не стал его использовать.
Вы должны оставить ANSI_NULLS ON
и использовать IS NULL
, чтобы оценить, является ли что-то НУЛЕВЫМ.
Если у вас возникают проблемы с запоминанием того, как по умолчанию работает NULL (ANSI_NULLS ON), вам следует думать о NULL как " unknown ". Например, если в комнате два незнакомца, их имена равны NULL. Если ваш запрос «Их имена совпадают?» Ваш ответ НЕДЕЙСТВИТЕЛЕН.
Теперь, допустим, Боб находится в комнате с одним незнакомцем, которого зовут NULL. Снова ответ на ваш вопрос "Их имена совпадают?" НУЛЕВОЙ. Обратите внимание, что если вы сравните что-либо с NULL, ваш ответ будет NULL.