Il motivo <> non funziona è che SQL tratta NULL come sconosciuto - non sa cosa NULL dovrebbe significare, quindi valuta entrambi = e <> su un NULL valore come UNKNOWN (che è considerato falso in una clausola where o in una condizione di join). Per ulteriori informazioni, leggi questo:Perché NULL =NULL restituisce false nel server SQL
.
Se è presente un indice, l'utilizzo della funzione ISNULL significherà che l'indice non può essere utilizzato, quindi per assicurarti che la query possa utilizzare l'indice, usa semplicemente OR :
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0