在写SQL 条件语句是经常用到 不等于‘<>’的筛选条件,此时要注意此条件会将字段为null的数据也当做满足不等于的条件而将数据筛选掉。
例:表A
A1 | B1 |
1 | 0 |
2 | 1 |
3 | NULL |
用 select * from A where B1<>1查询时得到的结果为:
A1 | B1 |
1 | 0 |
要查出第三列只需将SQL 改为 :select * from A where B1<>1 or B1 is null 即可。
方法一:select COUNT(*) from table t WHERE t.col <> '3'
方法二:SELECT COUNT(*) FROM table t WHERE t.col NOT IN
(select t.col from table t WHERE t.col= '3')
方法三:select COUNT(*) from table t WHERE t.col <> '3' OR t.col IS NULL
方法四:select COUNT(*) from table t WHERE ISNULL(t.col,'')<>'3'
以上几句SQL的执行结果不同, 因为 <> 在排除3的同时, 将null也排除了,
所以当比较字段含null时,第一句将比第二、三、四句的结果少.