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