Der Grund <>
nicht funktioniert, ist, dass SQL NULL
behandelt als unbekannt - es weiß nicht, was NULL
ist soll bedeuten, also wertet es sowohl =
aus und <>
auf einem NULL
Wert als UNKNOWN
(was in einer where-Klausel oder Join-Bedingung als falsch behandelt wird). Weitere Informationen finden Sie hier:Warum wird NULL =NULL im SQL-Server als falsch ausgewertet
.
Wenn ein Index vorhanden ist, bedeutet die Verwendung der ISNULL-Funktion, dass der Index nicht verwendet werden kann. Um sicherzustellen, dass die Abfrage den Index verwenden kann, verwenden Sie einfach OR
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0