Lý do <>
không hoạt động là SQL xử lý NULL
như không xác định - nó không biết NULL
là gì được cho là có nghĩa, vì vậy nó đánh giá cả =
và <>
trên NULL
giá trị là UNKNOWN
(được coi là sai trong mệnh đề where hoặc điều kiện nối). Để biết thêm thông tin, hãy đọc phần này: Tại sao NULL =NULL đánh giá là false trong máy chủ SQL
.
Nếu có một chỉ mục trên đó, việc sử dụng hàm ISNULL sẽ có nghĩa là không thể sử dụng chỉ mục, vì vậy, để đảm bảo truy vấn có thể sử dụng chỉ mục chỉ cần sử dụng OR
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0