MySQL中NULL值与空值的坑

1. 表达含义

在mysql中

空值:表示一个空字符或零长度的字符串,可以使用空引号 '' 来表示,是已被定义的值;

NULL值:NULL表示缺少一个已知或适当的值,是未被定义的值;。

2. 比较运算

空值:"="或者"<"">""<>"NULL值:IS NULLIS NOT NULL 

假设t表中所有的数据是一个集合C,那么,集合C = 已被定义值的数据 + 未被定义值的数据
已被定义值的数据 = 值长度>0的数据 + 空值数据
未被定义值的数据 = NULL值数据

使用"="或者"<"">""<>" 等比较运算符时只能对‘已被定义的数据’进行筛选,
也就是结果集中都不包含NULL值数据

使用IS NULLIS NOT NULL 时所有数据进行筛选,IS NULL的结果集是 NULL值数据,
IS NOT NULL的结果集是 已被定义的数据,即除了NULL值之外的数据

3. COUNT函数

select COUNT(1) from t_a ; -- 输出所有行数
select COUNT(*) from t_a ; -- 输出所有行数

select COUNT(name) from t_a ; -- 输出所有name 列值不为NULL的行数,包含空值

4. ORDER BY

在使用 ORDER BY 进行排序时
升序排序:NULL 值在空值之前,空值在其他值之前,即 NULL 值、空值、其他值;
降序排序则反之。

5. NULL 值与任何其他值进行比较

NULL 值与任何其他值进行比较时都不会为真,或者说NULL 值不能任何其他值进行比较,
即使是 NULLNULL 进行比较也是如此。

select 1 <> 1; -- 0
select 1 <> ''; -- 1

select 1 = NULL; -- NULL
select 1 <> NULL; -- NULL

select NULL = NULL; -- NULL
select NULL <> NULL; -- NULL

6. N/A 与 NULL

N/A就是Empty Set,是指当查询结果为空时,MySQL返回的结果集。
NULL是指某个字段没有被定义值,两者没有直接关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值