zoukankan      html  css  js  c++  java
  • Oracle 排序中使用nulls first 或者nulls last 语法

    Nulls first和nulls last是Oracle Order by支持的语法
    如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
    如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
    使用语法如下:
    --将nulls始终放在最前
    select * from zl_cbqc order by cb_ld nulls first
     
    --将nulls始终放在最后
    select * from zl_cbqc order by cb_ld desc nulls last
    --实例
    1.order by col  (asc/desc)  NULLS LAST 不管col如何排序 col的null(空值) 总是在最后
    SQL> WITH tab AS(
      2  SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual
      3  UNION ALL
      4  SELECT 2,'小张','开发中心' FROM dual
      5  UNION ALL
      6  SELECT 3,'小王','开发中心' FROM dual
      7  UNION ALL
      8  SELECT 4,'小丽','研发中心' FROM dual
      9  )
     10  SELECT *
     11    FROM (
     12          SELECT ID, NAME, DEPT FROM tab
     13          UNION ALL
     14          SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT
     15          )
     16   ORDER BY DEPT, ID NULLS LAST
     17  /
            ID NAME     DEPT
    ---------- -------- --------
             1 小明     开发中心
             2 小张     开发中心
             3 小王     开发中心
               开发中心 开发中心
             4 小丽     研发中心
               研发中心 研发中心
    已选择6行。
    2.order by col  (asc/desc)  NULLS first 不管col如何排序 col的null(空值) 总是在最前
    SQL> edi
    已写入 file afiedt.buf
      1  WITH tab AS(
      2  SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual
      3  UNION ALL
      4  SELECT 2,'小张','开发中心' FROM dual
      5  UNION ALL
      6  SELECT 3,'小王','开发中心' FROM dual
      7  UNION ALL
      8  SELECT 4,'小丽','研发中心' FROM dual
      9  )
     10  SELECT *
     11    FROM (
     12          SELECT ID, NAME, DEPT FROM tab
     13          UNION ALL
     14          SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT
     15          )
     16*  ORDER BY DEPT, ID NULLS first
    SQL> /
            ID NAME     DEPT
    ---------- -------- --------
               开发中心 开发中心
             1 小明     开发中心
             2 小张     开发中心
             3 小王     开发中心
               研发中心 研发中心
             4 小丽     研发中心
    已选择6行。
    目的:
    本来的目的是把部门相同的人员归在一起
    SQL> edi
    已写入 file afiedt.buf
      1  WITH tab AS(
      2  SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual
      3  UNION ALL
      4  SELECT 2,'小张','开发中心' FROM dual
      5  UNION ALL
      6  SELECT 3,'小王','开发中心' FROM dual
      7  UNION ALL
      8  SELECT 4,'小丽','研发中心' FROM dual
      9  )
     10  SELECT id||name
     11    FROM (
     12          SELECT ID, NAME, DEPT FROM tab
     13          UNION ALL
     14          SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT
     15          )
     16*  ORDER BY DEPT, ID NULLS last
    SQL> /
    ID||NAME
    ------------------------------------------------
    1小明
    2小张
    3小王
    开发中心
    4小丽
    研发中心
    已选择6行。
  • 相关阅读:
    MYSQL 5.7修改密码,登录问题
    linux 系统 cp: omitting directory 问题解决
    闭包函数是什么
    ecshop 前台个人中心修改侧边栏 和 侧边栏显示不全 或 导航现实不全
    ecshop 前台分页
    php 5.3新增的闭包语法介绍function() use() {}
    剖析 Linux hypervisor
    长久的深情能否维系
    私有云的迁移:从VMware到OpenStack
    Openstack 架构简述
  • 原文地址:https://www.cnblogs.com/shipeng22022/p/4614017.html
Copyright © 2011-2022 走看看