ITPub博客

首页 > 数据库 > Oracle > database 空值问题

database 空值问题

原创 Oracle 作者:xuexiaogang 时间:2023-01-12 23:15:01 1 删除 编辑

很多人喜欢把字段默认设置为空,然后用空去判断逻辑。比如select * from t where xx is null.其实这种做法有较大的问题。我们例举一下:如图1


                                    图1

然后我们对不同的列分别聚合一下。如图2.


                                              图2.

每个SQL都是全表查询。但是count的值却不一样。因为null 不计入。所以我们对列建立索引的时候,索引也不包括null。(一般来说都这样)

所以一般where xx is null也基本上用不到索引(极端情况另外再说)。这也就是我说不要用null作为业务判断的原因。

一般数据库都这样。比如MySQL 如图3.


                                                                                         图3

下面看两个存储过程。


如图4,分别执行这两个存储过程。


                                            图4

这个存储过程不是我独创的,主要是说明null既不属于大于0也不属于小于0.

这就是其实我们一般对null 有一个误解。我们一直理解是空。但是实际上理解为 “不确定”更加好一些。如果这样理解,那么我们就不会去在程序中写is null了。


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

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

注册时间:2013-07-01

  • 博文量
    422
  • 访问量
    953518