кое-что о ansi_nulls - PullRequest
       21

кое-что о ansi_nulls

2 голосов
/ 30 апреля 2010

У меня есть вопрос, что мы всегда говорим, что null = null является ложным, я хочу знать, что когда ansi_nulls выключен, это утверждение, которое "null = null" также ложно? спасибо

Ответы [ 2 ]

10 голосов
/ 30 апреля 2010

С 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.

1 голос
/ 01 мая 2010

Когда ansi_nulls выключено, null = null вернет true.

* * 1004 Eg. * * 1005
set ansi_nulls off
select 1 where null=null

Дает вам:

1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...