首 页IT知识库翔宇问吧收藏内容
当前位置:翔宇亭IT乐园IT知识库数据库Oracle

对oracle中排序的总结

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-02-02 12:02:00

       -- 按拼音排序 (系统默认)

  select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_PINYIN_M');

  -- 按部首排序

  select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_STROKE_M');

  -- 按笔画排序

  select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_RADICAL_M');

  --排序后获取第一行数据

  select * from (select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_PINYIN_M') )C where rownum=1

  --降序排序

  select * from perexl order by zongrshu desc

  --升序排序

  select * from perexl order by zongrshu asc

  --将nulls始终放在最前

  select * from perexl order by danwei nulls first

  --将nulls始终放在最后

  select * from perexl order by danwei desc nulls last

  --decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一特定值

  select * from perexl order by decode(danwei,null,'单位是空', danwei)

  -- 标准的rownum分页查询使用方法

  select *from (select c.*, rownum rn from personnel c)where rn >= 1and rn <= 5

  --在oracle语句rownum对排序分页的解决方案

  --但是如果, 加上order by 姓名 排序则数据显示不正确

  select *from (select c.*, rownum rn from personnel c order by 出生年月)where rn >= 1and rn <= 5

  --解决方法,再加一层查询,则可以解决

  select *from (select rownum rn, t.*from (select 姓名, 出生年月 from personnel order by 出生年月 desc) t)where rn >= 1and rn <= 5

  --如果要考虑到效率的问题,上面的还可以优化成(主要两者区别)

  select *from (select rownum rn, t.*from (select 姓名,出生年月 from personnel order by 出生年月 desc) t where rownum <= 10) where rn >= 3

  --nvl函数可以将输入参数为空时转换为一特定值,下面就是当单位为空的时候转换成“单位是空”

  select * from perexl order by nvl(danwei,'单位是空')

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

Tags:oracle 排序

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:

相关文章

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2022 biye5u.com. All Rights Reserved.