Anledningen <>
inte fungerar är att SQL behandlar NULL
som okänd - den vet inte vad NULL
antas betyda, så det utvärderar både =
och <> på en
NULL
värde som OKKEN
(vilket behandlas som falskt i en where-klausul eller join-villkor). För mer information, läs detta:Varför utvärderas NULL =NULL till falskt i SQL-servern
.
Om det finns ett index på den, kommer användningen av ISNULL-funktionen att innebära att indexet inte kan användas, så för att se till att frågan kan använda indexet, använd bara ELLER
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0