Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Valores NULL dentro da cláusula NOT IN


A consulta A é igual a:
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null

Como 3 = 3 é verdade, você obtém um resultado.

A consulta B é igual a:
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null

Quando ansi_nulls está ativado, 3 <> null é UNKNOWN, então o predicado é avaliado como UNKNOWN e você não obtém nenhuma linha.

Quando ansi_nulls está desativado, 3 <> null é true, então o predicado é avaliado como true e você obtém uma linha.