Я удивлен, увидев, что IS NULL и = NULL дают разные результаты в выбранном запросе. В чем разница между ними? Когда использовать что. Я был бы рад, если вы сможете объяснить мне подробно.Есть ли разница между IS NULL и = NULL
ответ
= NULL
всегда unknown
(это часть 3 состояния логики), но WHERE
статья рассматривает его как false
и капли из набора результатов. Так NULL
вы должны использовать IS NULL
Причины описаны здесь: Why does NULL = NULL evaluate to false in SQL server
Это не 'ложь'. Это «неизвестно». Если он был ложным, тогда 'NOT (X = NULL)' будет 'true'. Это не тот случай. SQL использует 3-значную логику. –
@ Мартин Смит Я знаю о трех логике состояния. но предложение 'WHERE' рассматривает' unknown' как 'false' и выпадает из набора результатов. – Andrey
Чтобы добавить к существующим ответам, это зависит от того, у вас 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'
из трехзначной-логики SQL:
http://en.wikipedia.org/wiki/Null_%28SQL%29#Three-valued_logic_.283VL.29
Extract соответствующего пункта:
Проблемы
Null было фокус споров и источник из-за связанной с ним трехзначной логики (3VL), специальных требований для ее использования в соединениях SQL и специальной обработки , требуемой совокупными функциями и операторами группировки SQL. Компьютер научный профессор Рон ван дер Мейден обобщил различные вопросы как: «Несоответствия в стандарте SQL означают, что невозможно использовать любую интуитивную логическую семантику для обработки нулей в SQL». Хотя для решения этих вопросов были сделаны различные предложения, сложность альтернатив препятствовала их широко распространенному принятию .
+1 Для того, чтобы быть единственным ответом на это. –
Пожалуйста, не оставляйте ссылки только для ответов. Включите соответствующую информацию из ссылки здесь, чтобы, если целевой сайт исчезнет, ваш ответ по-прежнему будет полезен. (Это лучше как комментарий.) – jpaugh
- 1. есть ли разница между: "not variable is null" и "variable is not null"?
- 2. null и NULL, есть ли разница?
- 3. Разница между MySQL IS NOT NULL и! = ''
- 4. В чем разница между «x is null» и «x == null»?
- 5. Есть ли разница между == null и .equals ("null")?
- 6. Есть ли разница между (null == var) и (var == null)
- 7. Есть ли разница между "not null" и "not null enable"?
- 8. В MySql какая разница между: = NULL и IS NOT NULL
- 9. Есть ли разница между «! = NULL» и «IS NOT NULL» в MySQL?
- 10. Что такое «= null» и «IS NULL»
- 11. Разница между NULL и null в PHP
- 12. Разница между 'a == null' и 'null == a'
- 13. В чем разница между «x IS NULL» и «NOT (x IS NOT NULL)»?
- 14. Разница между (null) и <null>
- 15. Разница между '(()) и (минус null null)
- 16. Разница между Is.NotNull и! = Null
- 17. Есть ли альтернатива для Where is Null, используя Where = Null?
- 18. context.getExternalFilesDir (null) is null
- 19. Есть ли разница между NULL и пустой строкой
- 20. есть ли разница @null Vs # 00000000
- 21. Разница между ColumnName = Null и ColumnName Null в SQL Server
- 22. Разница между NULL в SQL и null в языках программирования
- 23. В чем разница между «(Object) null» и «null» в Java?
- 24. Есть ли функциональная разница между Assert.IsNotNull (·) Assert.AreNotEqual (null, ·)?
- 25. Различия между «IS NULL» и «ISNULL()» в Mysql
- 26. Есть ли разница в реализации между/dev/zero &/dev/null?
- 27. В чем разница: = null и! == null?
- 28. В чем разница между DEFAULT NULL и CHECKBOX NULL mysql?
- 29. Разница между Object.create (null) vs {}?
- 30. Разница между нулем == объект и объект == null
За дополнительной информацией обращайтесь к [статье Википедии] (http://en.wikipedia.org/wiki/Null_%28SQL%29). –
Это дубликат ряда вопросов: http://stackoverflow.com/questions/1843451/why-does-null-null-evaluate-to-false-in-sql-server – Paddy