MySQL 中有关 NULL 的三个坑

发布时间:2024年01月12日

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;?

?

文章来源:https://blog.csdn.net/xiaoshitou_2015/article/details/135558039
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。