What's the difference between equality (=) and inequality () on BIT field in SQL Server? Is there difference between WHERE [BitField] = 1 and WHERE [BitField] &lt;&gt; 0?
They seem logically equivalent.
SQL Server, however, disagrees and creates slightly different execution plans. (Which is bad because the second form doesn't use existing indexes very effectively.)
Am I missing something, or it is just the way inequality operators behave?
They seem logically equivalent.

They are.  Even with ANSI_NULLS OFF &quot;a SELECT statement that uses WHERE column_name &lt;&gt; XYZ_value returns all rows that are not XYZ_value and that are not NULL.&quot;
I found an old feedback item for this here, you can go vote for it.