宋俊花

2020-07-23   阅读量: 881

Mysql

有疑问的时候,运行一下,SQL忠实告诉你答案:记MySQL Null值探索

扫码加入数据分析学习群

近4天学习SQL的时候,最大的感触是:

小白想训练思维,写出来,去MySQL运行一下。

所以在老师讲到空值Null与任何值运算都是返回空值的时候,我就写下了:

image.png

这个没问题!

然后,再输入:

image.png


唉~ 不对了,答案不是空啊?!

于是发现:

Select (0 and null) = 0

Select (1 and null) = null

Select (0 or null) = null

Select (1 or null) = 1


老师也解释不了了!


答应第二天揭秘! (我是没有这个能力揭秘的,老师毕竟是老师,此处手动大拇指)


今天,果然,老师带来了答案,可是搜集了很多资料哦~

原来这里存在一个“三值逻辑”:

传统的真假逻辑,对于一个给定的命题,它要么为真,要么为假,非真即假,非假即真。在二值逻辑中,逻辑运算的结果只有真和假,不存在任何中间态。

但是,世间的事情,哪里都是这么简单的非黑即白呢~非真即假,非好即坏,是理想中的世界,而现实世界要复杂得多。对于一个命题,它不仅有可能是真的,有可能是假的,还有可能是未知的、不知道的、判断不了的。那么就有真、假、未知三种结果,即三值逻辑。

对于一个命题来说,如果它非真,不意味着它一定为假,因为它也有可能是NULL;如果它非假,对立面也不一定是真,因为它也有可能是NULL。TRUE/FALSE/NULL,三种逻辑运算结果,形成了三值逻辑体系。

————————————————

当 NULL 参与逻辑运算时,逻辑运算的结果会变得有些“反直觉”。但只要理解了 NULL 的本质,规律也并不难记住。


或命题遵从:同假则假,一真则真,其余为 NULL
且命题遵从:同真则真,一假则假,其余为 NULL

它和任何类型的数据进行运算,结果都为NULL

image.png



更多详细解释看柯老师超全的blog吧:https://blog.csdn.net/kejiayuan0806/java/article/details/107528605


添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
25.4676 6 2 关注作者 收藏

评论(0)


暂无数据

推荐课程