当前位置:网站首页 >> 新闻动态 >> 编程知识

Oracle排序中使用nulls first或者nulls last语法

发布人:网站管理员 发布时间:2014-12-09 21:52 点击 1452 次

  -原理

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

       文章来源:http://blog.sina.com.cn/s/blog_6fbd6e050100wztg.html



如果您想了解更多湖南网站建设湖南网站优化长沙网站建设长沙网站优化长沙网络推广长沙网络营销等知识资讯请登录http://www.hnyongen.com/转载请注明文章来源:湖南勇恩立信电子商务有限公司



Copyright © 2013-2020 All Rights Reserved 湖南勇恩网络科技 版权所有 站点地图

长沙网站制作 长沙网站建设 长沙网站优化 长沙网络推广 长沙网站设计 长沙网络公司 长沙做网站 长沙网络营销 湖南网站建设 湖南网站优化 湖南网络公司 网站建设方案 网络营销培训 湖南勇恩网络科技

分享按钮