De reden <>
niet werkt, is dat SQL NULL
behandelt als onbekend - het weet niet wat NULL
zou moeten betekenen, dus het evalueert zowel =
en <>
op een NULL
waarde als UNKNOWN
(die wordt behandeld als onwaar in een where-clausule of join-voorwaarde). Lees dit voor meer informatie:Waarom evalueert NULL =NULL naar onwaar in SQL-server
.
Als er een index op staat, betekent het gebruik van de ISNULL-functie dat de index niet kan worden gebruikt, dus om ervoor te zorgen dat de query de index kan gebruiken, gebruikt u gewoon OR
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0