Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Valori NULL all'interno della clausola NOT IN

La query A è la stessa di:

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

Poiché 3 = 3 è vero, ottieni un risultato.

La query B è la stessa di:

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

Quando ansi_nulls è attivo, 3 <> null è UNKNOWN, quindi il predicato restituisce UNKNOWN e non ottieni alcuna riga.

Quando ansi_nulls è disattivato, 3 <> null è true, quindi il predicato restituisce true e ottieni una riga.