NULL是不是空?

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

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值