? Estoy sorprendido de ver que IS NULL y = NULL están arrojando resultados diferentes en una consulta de selección. ¿Cuál es la diferencia entre ellos? Cuándo usar qué. Me gustaría que me expliques en detalle.¿Hay alguna diferencia entre IS NULL y = NULL
Respuesta
= NULL
siempre es unknown
(esta es una pieza de 3 lógica estado), pero WHERE
cláusula lo trata como false
y gotas del conjunto de resultados. Así que para NULL
se debe utilizar se describen aquí IS NULL
Razones: Why does NULL = NULL evaluate to false in SQL server
No es 'falso'. Es 'desconocido'. Si fuera falso, 'NOT (X = NULL)' sería 'true'. Este no es el caso. SQL usa 3 valores de lógica. –
@Martin Smith conozco la lógica de 3 estados. pero la cláusula 'WHERE' trata' unknown' como 'false' y lo deja caer del conjunto de resultados. – Andrey
Para añadir a las respuestas existentes, que depende de si tiene o no en ANSI_NULLS, cuando se utiliza "= 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'
debido a la tres-lógica valioso de SQL:
http://en.wikipedia.org/wiki/Null_%28SQL%29#Three-valued_logic_.283VL.29
Extracto de un párrafo pertinente:
Desafíos
nulos ha sido la foco de controversia y una fuente de debate debido a su lógica asociada de tres valores (3VL), los requisitos especiales para su uso en combinaciones de SQL, y el manejo especial requerido por las funciones de agregado y los operadores de agrupación SQL. Computadora profesor de ciencias Ron van der Meyden resumió los diversos problemas como: "Las incoherencias en el estándar SQL significan que no es posible atribuir ninguna semántica lógica intuitiva al tratamiento de nulos en SQL." A pesar de que se han realizado varias propuestas para resolver estos problemas , la complejidad de las alternativas ha impedido su adopción generalizada .
+1 por ser la única respuesta para mencionar esto. –
No publique respuestas solo de enlace. Incluya la información relevante del enlace aquí, de modo que si el sitio objetivo desaparece, su respuesta aún será útil. (Esto es mejor como un comentario). – jpaugh
- 1. what is "= null" and "IS NULL"
- 2. ¿Hay alguna diferencia entre myNullableLong.HasValue y myNullableLong! = Null?
- 3. this.domNode is null
- 4. Diferencias entre "IS NULL" e "ISNULL()" en Mysql
- 5. Diferencia entre NULL y nulo en PHP
- 6. Diferencia entre null == objeto y objeto == nulo
- 7. ¿Hay alguna diferencia entre "foo is None" y "foo == None"?
- 8. "is not null" vs boolean MySQL - Rendimiento
- 9. ¿Cuál es la diferencia entre `null == last` y` null eq last`, en Scala?
- 10. ActiveRecord IS NOT NULL buscador sql
- 11. "IS NULL" en Zend_Db_Table select not working
- 12. ¿Cuál es la diferencia entre null y System.DBNull.Value?
- 13. ¿Cuál es la diferencia entre estos (bCondition == NULL) y (NULL == bCondition)?
- 14. ¿Cuál es la diferencia entre DEFAULT NULL y CHECKBOX NULL mysql?
- 15. Python: diferencia entre `is` y` == `?
- 16. ¿Cuál es la diferencia entre NULL en C++ y null en Java?
- 17. ¿cuál es la diferencia entre NULL y Empty en mysql
- 18. Objective-C: ¿Cuál es la diferencia entre NULL, nil y @ ""?
- 19. ¿Cuál es la diferencia entre [NSNull null] y nil?
- 20. (a! = Null) o (null! = A)
- 21. C# DateTime - ¿Cómo verificar que Time part is NULL?
- 22. ¿Hay alguna razón para especificar DEFAULT (NULL) en una columna que admite valores NULL?
- 23. (obj == null) vs (null == obj)?
- 24. En C, ¿hay alguna diferencia entre un puntero NULL y un puntero que apunta a 0? ¿Entonces qué?
- 25. ¿Hay alguna diferencia entre CPython y Python
- 26. ¿Hay alguna diferencia entre `ListView.invalidateViews()` y 'Adapter.notifyDataSetChanged()'?
- 27. ¿Hay alguna diferencia entre DataTable.Clear y DataTable.Rows.Clear?
- 28. ¿Hay alguna diferencia entre System.Windows.Clipboard y System.Windows.Forms.Clipboard?
- 29. ¿Hay alguna diferencia entre MsgBox y MessageBox.Show?
- 30. ¿Hay alguna diferencia entre log4net.Config.BasicConfigurator.Configure() y log4net.Config.XmlConfigurator.Configure()?
Consulte el [artículo de la wikipedia] (http://en.wikipedia.org/wiki/Null_%28SQL%29) para obtener información adicional. –
Este es un duplicado de una serie de preguntas: http://stackoverflow.com/questions/1843451/why-does-null-null-evaluate-to-false-in-sql-server – Paddy