上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章中对此进行介绍。