que estaba leyendo este artículo: Get null == null in SQLpor qué no es nulo igual a null falsa
Y el consenso es que cuando se trata de probar la igualdad entre dos (anulables) columnas SQL, el enfoque correcto es:
where ((A=B) OR (A IS NULL AND B IS NULL))
Cuando A y B son NULL, (A = B) aún devuelve FALSE, ya que NULL no es igual a NULL. Es por eso que se requiere un cheque adicional.
¿Qué pasa cuando se prueban las desigualdades? Después de la discusión anterior, que me hizo pensar que a la desigualdad prueba que tendría que hacer algo como:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Sin embargo, me di cuenta de que eso no es necesario (al menos no en Informix 11.5), y puedo solo hazlo:
where (A<>B)
Si A y B son NULL, esto devuelve FALSE. Si NULL no es igual a NULL, entonces, ¿no debería ser TRUE?
EDITAR
Todas estas son buenas respuestas, pero creo que mi pregunta era un poco vago. Permítanme expresarlo de otro modo:
Teniendo en cuenta que ya sea A o B puede ser nulo, ¿es suficiente para comprobar su desigualdad con
where (A<>B)
o tengo que comprobar de forma explícita así:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
CONSULTE este thread para la respuesta a esta pregunta.
En resumen, ' anything = NULL' es NULL (ni verdadero ni falso). y 'anything <> NULL' es NULL también. –