时间:2023-01-19 09:30:01 | 栏目:Mysql | 点击:次
日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到 MySQL 中的 NULL 和空字符 '',二者表面上看都是空,其实存在一些差异的
NULL 的长度是 NULL,不确定占用了多少存储空间,它是占用存储空间的'' 的长度是 0,是不占用空间的*通俗的讲:空字符串 '' 就像是一个真空状态的杯子,什么都没有;而空值 NULL 就像是一个装满空气的杯子,是有东西的。二者虽然看起来都是空的、透明的,但是有着本质的区别
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.3.1. 错误 SQL

2.3.2. 正确 SQL

2.4.1. 错误 SQL

2.4.2. 正确 SQL

=,>,< ,<>,!= 都不能用于查询比较 null 值,如果需要查询空值 null,必须使用 is null 或 is not null'' 可以使用 =, !=, <, > 等算术运算符来查询的
使用 count() 的时候,空值 null 并不会被当成有效值去统计的
空字符串 '' 是会被 count() 函数所统计的
| 运算符 | 含义 |
|---|---|
= |
等于 |
<=> |
安全等于,可以比较 null |
<> 或 != |
不等于 |
>= |
大于等于 |
<= |
小于等于 |
> |
大于 |
< |
小于 |
IS NULL |
判断一个值是否为 null |
IS NOT NULL |
判断一个值是否不为 null |