Årsagen <>
ikke virker, er at SQL behandler NULL
som ukendt - den ved ikke hvad NULL
formodes at betyde, så det evaluerer både =
og <> på en
NULL
værdi som UKENDT
(som behandles som falsk i en where-klausul eller join-betingelse). For mere info, læs dette:Hvorfor evalueres NULL =NULL til falsk i SQL-serveren
.
Hvis der er et indeks på det, vil brug af ISNULL-funktionen betyde, at indekset ikke kan bruges, så for at sikre, at forespørgslen kan bruge indekset, skal du blot bruge ELLER
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0