当前位置:Gxlcms > 数据库问题 > MySQL NULL--三值逻辑(Three Value Logic)

MySQL NULL--三值逻辑(Three Value Logic)

时间:2021-07-01 10:21:17 帮助过:15人阅读

在关系型数据库中,由于NULL值的存在,导致逻辑表达式存在三种值:TRUE/FALSE/UNKNOW。

SELECT 
999=NULL AS C1,
999=111 AS C2,
999=999 AS C3;

+------+----+----+
| C1   | C2 | C3 |
+------+----+----+
| NULL |  0 |  1 |
+------+----+----+
1 row in set (0.00 sec)

NULL值表示不确定或未知的值,因此NULL值是否等于或不等于某个特定值,只能使用IS NULL或IS NOT NULL来判断。

 

NULL值处理

在大部分场景中,NULL值不等于任何值包括NULL值,但在下列场景中设定NULL值相等:

1、对于唯一索引,仅允许唯一索引列存在一个NULL值。

2、对于GROUP BY和DISTINCT操作,所有NULL值当做同一组处理。

3、对于ORDER BY操作,所有NULL值被当做"最小值"排序在一起。

 

UNKNOW值处理

对于逻辑表达式计算后得到的UNKNOW值,在不同场景中处理方式不同:

1、在WHERE/ON/HAVING三类筛选操作中,UNKNOW值被当做FALSE处理。

2、在CHECK约束中,UNKNOW值被当做TRUE处理,CHECK约束仅对CHCK表达式为FALSE的记录返回错误。

 

MySQL NULL--三值逻辑(Three Value Logic)

标签:not   nbsp   col   logic   group by   筛选   唯一索引   索引   逻辑   

人气教程排行