SQL编程思想:基于5种主流数据库代码实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人


2.3.4 空值的排序位置

空值(NULL)在数据库中表示未知或者缺失的数据。如果排序的字段中存在空值时,应该如何处理呢?以下语句查找人力资源部(dept_id=2)中的员工,并且按照奖金从低到高进行排序显示:

不同数据库系统对于空值的排序位置采用了不同的处理方式。MySQL、Microsoft SQL Server以及SQLite中的空值排在了最前。查询返回的结果如下:

Oracle和PostgreSQL中的空值排在了最后。查询返回的结果如下:

另外,Oracle、PostgreSQL以及SQLite支持使用NULLS FIRST关键字,将空值排在最前;或者使用NULLS LAST关键字,将空值排在最后。以下查询语句返回的结果与上面的MySQL和Microsoft SQL Server一致:

总而言之,对于空值的排序:

● MySQL、Microsoft SQL Server以及SQLite认为在排序时空值最小,所以,在升序排序时空值排在最前,在降序排序时空值排在最后。

● Oracle和PostgreSQL认为在排序时空值最大,所以,在升序排序时空值排在最后,在降序排序时空值排在最前。

● Oracle、PostgreSQL以及SQLite支持使用NULLS FIRST和NULLS LAST指定空值的排序位置。

提示:指定空值的排序位置还有一个更通用的解决方法,就是利用函数将空值转换为一个固定的值。我们将会在第5章中对此进行介绍。