• 2.5 处理排序空值


    问题:在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;

     

  • 相关阅读:
    对返回的json数据重写格式,用特性JsonConverter
    dev 的NavBarControl动态菜单
    获取oracel数据库的结构
    Java-背单词程序(俄语)
    实现同或操作 C++
    输入字符串先用cin后用getline函数失效原因
    C++全局变量与局部变量
    4.Redis事务
    3.持久化配置
    2.常用数据类型
  • 原文地址:https://www.cnblogs.com/l10n/p/7518464.html
Copyright © 2020-2023  润新知