Причината <>
не работи е, че SQL третира NULL
като неизвестен - не знае какво NULL
се предполага, че означава, така че оценява и двете =
и <>код> на
NULL
стойност като UNKNOWN
(което се третира като невярно в клауза where или условие за свързване). За повече информация прочетете това:Защо NULL =NULL се оценява на false в SQL сървър
.
Ако има индекс върху него, използването на функцията ISNULL ще означава, че индексът не може да се използва, така че за да сте сигурни, че заявката може да използва индекса, просто използвайте OR
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0