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