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