Důvod <>
nefunguje je, že SQL zachází s NULL
jako neznámý - neví co NULL
má znamenat, takže vyhodnotí obě =
a <>
na NULL
hodnotu jako UNKNOWN
(což je považováno za nepravdivé v klauzuli where nebo podmínce spojení). Pro více informací si přečtěte toto:Proč se hodnota NULL =NULL na serveru SQL vyhodnotí jako nepravda
.
Pokud je na něm index, použití funkce ISNULL bude znamenat, že index nelze použít, takže pro zajištění, že dotaz může index používat, stačí použít OR
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0