mysql count()函数不计算null和空值问题

 更新时间:2023年08月12日 16:17:35   作者:吃香菜也吃西红柿  
这篇文章主要介绍了mysql count()函数不计算null和空值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql count()函数不计算null和空值

解决方案(二选一)

1. 在做统计时判断count的字段不为null和空

SELECT workPost AS name,COUNT(workPost) as value FROM graduateinfo
       where workPost is not null and workPost != ''

2. 前端过滤数据

踩坑

网上大部分解决方案都是说count(字段)就能解决,我自己用了并没有效果。

mysql中的空值 Null 和空字符‘‘

1. 空值 Null 和空字符 ''

日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到 MySQL 中的 NULL 和空字符 '' ,二者表面上看都是空,其实存在一些差异的

  • 空值 NULL 的长度是 NULL ,不确定占用了多少存储空间,它是占用存储空间的
  • 空字符串 '' 的长度是 0 ,是不占用空间的

通俗的讲:空字符串 '' 就像是一个真空状态的杯子,什么都没有;而空值 NULL 就像是一个装满空气的杯子,是有东西的。二者虽然看起来都是空的、透明的,但是有着本质的区别

2. 空值 Null 和空字符 '' 在查询方式上的对比

2.1. 创建 SQL 脚本

CREATE TABLE `test_1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
--插入数据
INSERT INTO test_1 VALUES(1,'李斯','111111');
INSERT INTO test_1 VALUES(2,'','');
INSERT INTO test_1 VALUES(3,null,'');
INSERT INTO test_1 VALUES(4,null,1);

表中的数据如下,注意 null 值与 ''

2.2. 查询 username 列为空字符串 '' 的所有数据

2.3. 查询 username 列为空值 null 的所有数据

  • 2.3.1. 错误 SQL

  • 2.3.2. 正确 SQL

2.4. 查询 username 列不为空值 null 的所有数据

  • 2.4.1. 错误 SQL

  • 2.4.2. 正确 SQL

比较字符 =,>,< ,<> != 都不能用于查询比较 null 值,如果需要查询空值 null ,必须使用 is null is not null 空值 '' 可以使用 =, !=, <, > 等算术运算符来查询的

3. 空值Null和空字符 '' 在 count() 函数查询的对比

3.1. 查询 username 列数据总数

使用 count() 的时候,空值 null 并不会被当成有效值去统计的空字符串 '' 是会被 count() 函数所统计的

4. MySQL中的比较运算符

运算符含义
=等于
<=>安全等于,可以比较 null
<> 或 !=不等于
>=大于等于
<=小于等于
>大于
<小于
IS NULL判断一个值是否为 null
IS NOT NULL判断一个值是否不为 null

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论