欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql : 使用不等于过滤null的问题

程序员文章站 2022-06-29 07:58:42
在写sql时遇到查询结果不对的情况,经查阅,发现是因为查询条件过滤null的问题;从网上找到如下资料: 在写SQL 条件语句是经常用到 不等于‘!=’的筛选条件,此时要注意此条件会将字段为null的数据也当做满足不等于的条件而将数据筛选掉。 例:表A 用 select * from A where ......

在写sql时遇到查询结果不对的情况,经查阅,发现是因为查询条件过滤null的问题;从网上找到如下资料:

 

在写sql 条件语句是经常用到 不等于‘!=’的筛选条件,此时要注意此条件会将字段为null的数据也当做满足不等于的条件而将数据筛选掉。

例:表a

mysql : 使用不等于过滤null的问题

用 select * from a where b1 != 1查询时得到的结果为:

mysql : 使用不等于过滤null的问题

第三列 b1为空的也是会筛选掉的。

因为 null 不是一个「值」,而是「没有值」。「没有值」不满足「值不等于1」这个条件。所以 mysql 尽量不要默认值是 null。

 

要查出第三列只需将sql 改为 :select * from a where b1 != 1 or b1 is null 即可。

上面这种方法最通俗,网上也最多,但是我总是感觉效率太低。

目前我使用的方法是:select * from a where ifnull(b1,'')  != 1

开发中遇到的问题,做下记录。