ITPub博客

首页 > 数据库 > Oracle > NULL是不是空?

NULL是不是空?

原创 Oracle 作者:xuexiaogang 时间:2023-06-12 20:39:15 0 删除 编辑

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

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

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


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


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


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



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


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

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2958240/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 看病与故障处理
请登录后发表评论 登录
全部评论
OracleACE/PostgreSQLACE/阿里云MVP/腾讯云TVP/墨天轮 MVP/TiDBMVA/数盟会华东区长老/OpenTenBase社区委和技术委委员/架构师技术同盟名人堂成员上海地区理事会成员/if社区联合发起人/《DBA实战手记》作者/公众号:四海内皆兄弟

注册时间:2013-07-01

  • 博文量
    422
  • 访问量
    953498