您的位置:首页 > 博客中心 > 数据库 >

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

时间:2022-03-15 15:13

三值逻辑(Three Value Logic)

在关系型数据库中,由于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的记录返回错误。

 

热门排行

今日推荐

热门手游