2.05 处理排序空值

Posted 长城之上是千亿的星空,星空之上是不灭的守望。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.05 处理排序空值相关的知识,希望对你有一定的参考价值。

问题:在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 处理排序空值的主要内容,如果未能解决你的问题,请参考以下文章

pandas 怎么处理表格中的空值

那些年我们踩过的坑,SQL 中的空值陷阱!

那些年我们踩过的坑,SQL 中的空值陷阱!

go数组

数据库空值排序

主键约束,外键约束,空值约束,默认值约束,唯一约束,检查约束的各个作用是啥?