暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

NULL是不是空?

原创 薛晓刚 2023-06-12
332

一般开发人员喜欢用NULL来作为判断,但是这不是一个好习惯。在有些数据库比如Oracle中几乎是无法用到索引的,在其他数据库中也极有可能无法用到索引。这里严谨一点,因为我都有在特殊场景的案例以及原因。

今天先说NULL是什么?开发人员认为这不就是空吗?我说不是啊。

来看看下面的实验。这里写入一条空值,另外再写入一个空字符串。因为也有开发有这个习惯。一起看看效果。


然后如下图查询a列不等于0的,看到这个结果开发人员是吃惊的。和预期大相径庭。


同样,如下图,如果计算求和与平均值,都没id2和id3的参与。只有id1和id4。


如果对全表进行运算,其结果如下图id2和id4都不参与运算



模拟一条数据变为负数。如下图所示,会发现count的数值和预期的逻辑不符合。如果以这样的数据去做业务判断,显然就会出错。


为什么会这样?就是我们一开始杀锁的,NULL不是空,而是不确定。因为不确定,所以各种查询都没有他,也不支持运算。

而where column is null极有可能是无法用到索引的。所以这就是我们不建议仅仅使用NULL作为业务逻辑判断的。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论