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