MySQL 中有关 NULL 的三个坑

Mysql   2024-03-17 09:03   185   0  

mysql sum 函数、count 函数,以及 NULL 值条件可能踩的坑。

  • SELECT SUM(score) FROM `person` ;    null

  • SELECT COUNT(score) FROM `person`;    0

  • select id from person where score=NULL;    null

显然,这三条 SQL 语句的执行结果和我们的期望不同:

  • 虽然score 是null,但 sum 的结果应该是 0 才对;

  • 虽然 score 是 null,但记录总数应该是 1 才对;

  • 使用 score =null 并没有查询到 id=1 的记录,查询条件失效。

原因是:

  • MySQL 中 sum 函数没统计到任何记录时,会返回 null 而不是 0,可以使用 IFNULL 函数把 null 转换为 0;

  • MySQL 中 count 字段不统计 null 值,count(*) 才是统计所有记录数量的正确方式。

  • MySQL 中使用诸如 =、<、> 这样的算数比较操作符比较 NULL 的结果总是 NULL,这种比较就显得没有任何意义,需要使用 IS NULL、IS NOT NULL 或 ISNULL() 函数来比较。

修改一下 SQL:

select ifnull(sum(score) ,0) from `person` ;   

select count(*) from `person` ;   

select * from `person` where score is null; 

 

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。
闲言碎语
丑小鸭变为白天鹅不是自己有多努力,而是它的父母就是白天鹅。
赞赏支持

如果觉得博客文章对您有帮助,异或土豪有钱任性,可以通过以下扫码向我捐助。也可以动动手指,帮我分享和传播。您的肯定,是我不懈努力的动力!感谢各位亲~