Oracle数据库之Oracle 排序中使用nulls first 或者nulls last 语法
小标 2018-08-16 来源 : 阅读 2183 评论 0

摘要:本文主要向大家介绍了Oracle数据库之Oracle 排序中使用nulls first 或者nulls last 语法,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。

本文主要向大家介绍了Oracle数据库之Oracle 排序中使用nulls first 或者nulls last 语法,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。

-原理

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行。

本文由职坐标整理并发布,希望对同学们学习Oracle有所帮助,更多内容请关注职坐标数据库Oracle数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程