Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

NULL-Werte in der NOT IN-Klausel

Abfrage A ist dasselbe wie:

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

Da 3 = 3 wahr ist, erhalten Sie ein Ergebnis.

Abfrage B ist dasselbe wie:

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

Wenn ansi_nulls eingeschaltet ist, 3 <> null ist UNKNOWN, also wird das Prädikat zu UNKNOWN ausgewertet und Sie erhalten keine Zeilen.

Wenn ansi_nulls ist aus, 3 <> null wahr ist, also wird das Prädikat als wahr ausgewertet und Sie erhalten eine Zeile.