database 空值问题

来源:这里教程网 时间:2026-03-03 18:20:15 作者:

很多人喜欢把字段默认设置为空,然后用空去判断逻辑。比如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了。

相关推荐