在写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时,第一句将比第二、三、四句的结果少.
本文探讨了在SQL查询中如何正确处理NULL值的问题。特别是使用不等于(<>)操作符时,NULL值会被误排除的情况。文章提供了几种解决方法,并对比了不同SQL语句的执行结果。
566

被折叠的 条评论
为什么被折叠?



