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

É NULL versus <> 1 bit SQL


O motivo <> não funciona é que o SQL trata NULL como desconhecido - não sabe o que NULL deve significar, então avalia tanto = e <> em um NULL valor como UNKNOWN (que é tratado como falso em uma cláusula where ou condição de junção). Para mais informações, leia isto:Por que NULL =NULL é avaliado como false no SQL Server .

Se houver um índice nele, usar a função ISNULL significará que o índice não pode ser usado, portanto, para garantir que a consulta possa usar o índice, use OR :
SELECT * 
FROM TableName
WHERE
   bit_column_value IS NULL OR bit_column_value = 0