给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的oracle数据库中关于null排序的问题,过去的都会过去,迎接崭新的开始,释放更美好的自己。
【 tulaoshi.com - 编程语言 】
问题描述:在处理一般的数据记录中,对于数字类型的字段,在oracle的排序中,默认把null值做为大于任何数字的类型,当然对于varchar2类型的字段,默认也是该处理方式,但是客户要求排序的过程中,需要把null的字段默认排在前边(从小--大)。一般的order by xxxx,无法解决。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)问题解决:
方案1:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)可以使用复杂的使用sql:
select * from(select a.*,rownum as my_sys_rownum from (select deptid,nvl(BDZNAME,' '),nvl(VOLLEVEL,'0'),ZBRL,nvl(ZBTS, '0'),nvl(FZR,'0'),nvl(DEPTIDDES,' '),nvl(TEL,' '),nvl(RUNSTATEDES,' '),nvl(ADDRESS,' '),BDZID from V_BDZ where rownum2000and ZBRL is null) aunionselect b.*,rownum+(select count(*) from (select deptid,nvl(BDZNAME,' '),nvl(VOLLEVEL,'0'),ZBRL,nvl(ZBTS, '0'),nvl(FZR,'0'),nvl(DEPTIDDES,' '),nvl(TEL,' '),nvl(RUNSTATEDES,' '),nvl(ADDRESS,' '),BDZID from V_BDZ where rownum2000and ZBRL is null)) as my_sys_rownum from (select deptid,nvl(BDZNAME,' '),nvl(VOLLEVEL,'0'),ZBRL,nvl(ZBTS, '0'),nvl(FZR,'0'),nvl(DEPTIDDES,' '),nvl(TEL,' '),nvl(RUNSTATEDES,' '),nvl(ADDRESS,' '),BDZID from V_BDZ where rownum2000and ZBRL is not null order by ZBRL) b) order by my_sys_rownum desc
方案2:
可以利用oracle中可以对order by中对比较字段做设置的方式来实现:
如: order by nvl( aaa,'-1')
来源:http://www.tulaoshi.com/n/20160219/1608080.html
看过《oracle数据库中关于null排序的问题》的人还看了以下文章 更多>>