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行。
  • 相关阅读:
    vue项目搭建
    js监听input输入框值的实时变化实例
    nodejs-Child Process模块
    nodejs-Express框架
    前端的存储技术cookie、sessionStorage、localStorage
    node.js之path
    css两列自适应布局的多种实现方式及原理。
    React jQuery公用组件开发模式及实现
    js创建对象的几种方式
    IE9 不F12打开控制台,代码不执行。打开后正常
  • 原文地址:https://www.cnblogs.com/shipeng22022/p/4614017.html
Copyright © 2011-2022 走看看