sql >> Base de Datos >  >> RDS >> Sqlserver

valores NULL dentro de la cláusula NOT IN

La consulta A es lo mismo que:

select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null

Dado que 3 = 3 es cierto, obtienes un resultado.

La consulta B es lo mismo que:

select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null

Cuando ansi_nulls está activado, 3 <> null es DESCONOCIDO, por lo que el predicado se evalúa como DESCONOCIDO y no obtiene ninguna fila.

Cuando ansi_nulls está desactivado, 3 <> null es verdadero, por lo que el predicado se evalúa como verdadero y obtiene una fila.