En varios idiomas, NULL se maneja de manera diferente:la mayoría de las personas conocen la lógica de dos valores donde true
y false
son los únicos valores comparables en expresiones booleanas (incluso si es falso se define como 0 y verdadero como cualquier otra cosa).
En SQL estándar, debe pensar en la lógica de tres valores. NULL no se trata como un valor real, podría llamarlo "desconocido". Entonces, si se desconoce el valor, no está claro si en su caso state
es 0, 1, o cualquier otra cosa. Entonces NULL != 1
resultados a NULL
de nuevo.
Esto concluye que siempre que filtre algo que puede ser NULL, debe tratar los valores NULL por sí mismo. Tenga en cuenta que la sintaxis también es diferente:los valores NULL solo se pueden comparar con x IS NULL
en lugar de x = NULL
. Consulte Wikipedia para obtener una tabla de verdad que muestre los resultados de las operaciones lógicas.