首页 > 编程语言 > 详细

2.05 处理排序空值

时间:2017-09-14 09:45:03      阅读:278      评论:0      收藏:0      [点我收藏+]

问题:在emp中根据comm排序结果。但是,这个字段可以有空值。需要指定是否将控制排在最后。

解决方案:根据数据的显示方式,以及特定的rdbms排序空值的方式,可以按照升序或降序来对空值的列排序。

select ename,sal,comm from emp
    order by 3 

select ename,sal,comm from emp
    order by 3 desc


这种解决方案中,如果可为空值的列包含非空值,那么也可以根据要求,按升序或降序排序,这可能正是所期待的,也许不是。

如果希望空值的排序与非空值不同,例如,要以升序或降序方式来排序非空值,将空值放在最后,则可使用case表达式有条件的排序列。

使用case表达式来标记一个值是否为为NULL。这个标记有两个值,一个表示NULL,一个表示非NULL。这样,只要在order by子句中增加标记列,便可以很容易的控制空值是排在前面还是最后,而不会被非空值所干扰。

select ename,sal,comm from(
    select ename,sal,comm, 
        case when comm is null then 0 else 1 end as is_null from emp
        ) X
order by is_null desc,comm;

 

2.05 处理排序空值

原文:http://www.cnblogs.com/liang545621/p/7518464.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!