sql - significa - que es null en un carro
¿Hay alguna diferencia entre IS NULL y=NULL (3)
Para agregar a las respuestas existentes, depende de si tiene ANSI_NULLS activado o no, cuando usa "= 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''
Me sorprende 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.
debido a la lógica de tres valores de SQL:
http://en.wikipedia.org/wiki/Null_%28SQL%29#Three-valued_logic_.283VL.29
Extracto de un párrafo relevante:
Desafíos
Null ha sido el foco de controversia y una fuente de debate debido a su lógica asociada de tres valores (3VL), requisitos especiales para su uso en combinaciones de SQL y el manejo especial requerido por las funciones agregadas y los operadores de agrupamiento SQL. El profesor de informática 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". Aunque se han hecho varias propuestas para resolver estos problemas, la complejidad de las alternativas ha impedido su adopción generalizada.
= NULL
siempre es unknown
(esta es una parte de la lógica de 3 estados), pero la cláusula WHERE
trata como false
y cae del conjunto de resultados. Entonces para NULL
deberías usar IS NULL
Las razones se describen aquí: ¿Por qué NULL = NULL evaluar a falso en el servidor SQL