理由 <>
うまくいかないのは、SQL が NULL
を扱うことです 不明 - NULL
がわからない を意味するはずなので、両方の =
を評価します および <>
NULL
で UNKNOWN
としての値 (WHERE 句または結合条件では false として扱われます)。詳細については、次を参照してください:SQL サーバーで NULL =NULL が false と評価される理由
.
インデックスがある場合、ISNULL 関数を使用するとインデックスが使用できないことを意味するため、クエリでインデックスを使用できるようにするには、OR
を使用します。 :
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0