oracle中对排序的总结ITeye - 娱乐之横扫全球

oracle中对排序的总结ITeye

2019年02月27日15时29分46秒 | 作者: 又绿 | 标签: 排序,单位,函数 | 浏览: 949

按拼音排序 (默许)

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

 

在句子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,单位是空)



本文地址:
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章