Cláusula NOT IN y valores NULL
Este problema surgió cuando obtuve diferentes registros para lo que pensé que eran consultas idénticas, una utilizando unnot in
where
restricción y la otra unaleft join
. La mesa en elnot in
La restricción tenía un valor nulo (datos incorrectos) que hizo que la consulta devolviera un conteo de 0 registros. En cierto modo comprendo por qué, pero podría necesitar alguna ayuda para comprender completamente el concepto.
Para decirlo simplemente, ¿por qué la consulta A devuelve un resultado pero B no?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
Esto fue en SQL Server 2005. También encontré que llamandoset ansi_nulls off
hace que B devuelva un resultado.