Powód <>
nie działa to, że SQL traktuje NULL
jako nieznany - nie wie co NULL
ma znaczyć, więc oblicza zarówno =
i <> na
NULL
wartość jako NIEZNANE
(co jest traktowane jako fałsz w klauzuli WHERE lub warunku dołączenia). Aby uzyskać więcej informacji, przeczytaj to:Dlaczego NULL =NULL daje wartość false na serwerze SQL
.
Jeśli znajduje się na nim indeks, użycie funkcji ISNULL oznacza, że indeks nie może być użyty, więc aby upewnić się, że zapytanie może używać indeksu, wystarczy użyć LUB
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0