2010-09-23 3 views
35

Я удивлен, увидев, что IS NULL и = NULL дают разные результаты в выбранном запросе. В чем разница между ними? Когда использовать что. Я был бы рад, если вы сможете объяснить мне подробно.Есть ли разница между IS NULL и = NULL

+2

За дополнительной информацией обращайтесь к [статье Википедии] (http://en.wikipedia.org/wiki/Null_%28SQL%29). –

+0

Это дубликат ряда вопросов: http://stackoverflow.com/questions/1843451/why-does-null-null-evaluate-to-false-in-sql-server – Paddy

ответ

37

= NULL всегда unknown (это часть 3 состояния логики), но WHERE статья рассматривает его как false и капли из набора результатов. Так NULL вы должны использовать IS NULL

Причины описаны здесь: Why does NULL = NULL evaluate to false in SQL server

+5

Это не 'ложь'. Это «неизвестно». Если он был ложным, тогда 'NOT (X = NULL)' будет 'true'. Это не тот случай. SQL использует 3-значную логику. –

+1

@ Мартин Смит Я знаю о трех логике состояния. но предложение 'WHERE' рассматривает' unknown' как 'false' и выпадает из набора результатов. – Andrey

10

Чтобы добавить к существующим ответам, это зависит от того, у вас ANSI_NULLS или нет, при использовании «= NULL».

-- This will print TRUE 
SET ANSI_NULLS OFF; 
IF NULL = NULL 
    PRINT 'TRUE' 
ELSE 
    PRINT 'FALSE' 

-- This will print FALSE 
SET ANSI_NULLS ON; 
IF NULL = NULL 
    PRINT 'TRUE' 
ELSE 
    PRINT 'FALSE' 
2

из трехзначной-логики SQL:

http://en.wikipedia.org/wiki/Null_%28SQL%29#Three-valued_logic_.283VL.29

Extract соответствующего пункта:

Проблемы

Null было фокус споров и источник из-за связанной с ним трехзначной логики (3VL), специальных требований для ее использования в соединениях SQL и специальной обработки , требуемой совокупными функциями и операторами группировки SQL. Компьютер научный профессор Рон ван дер Мейден обобщил различные вопросы как: «Несоответствия в стандарте SQL означают, что невозможно использовать любую интуитивную логическую семантику для обработки нулей в SQL». Хотя для решения этих вопросов были сделаны различные предложения, сложность альтернатив препятствовала их широко распространенному принятию .

+1

+1 Для того, чтобы быть единственным ответом на это. –

+1

Пожалуйста, не оставляйте ссылки только для ответов. Включите соответствующую информацию из ссылки здесь, чтобы, если целевой сайт исчезнет, ​​ваш ответ по-прежнему будет полезен. (Это лучше как комментарий.) – jpaugh

Смежные вопросы