Oracle中关于null排序的问题
问题描述:在处理一般的数据记录中,对于数字类型的字段,在oracle的排序中,默认把null值做为大于任何数字的类型,当然对于varchar2类型的字段,默认也是该处理方式,但是客户要求排序的过程中,需要把null的字段默认排在前边从小-->大)。一般的order by xxxx,无法解决。
问题解决:
方案1:可以使用复杂的使用sql:
select * from nvl(FZR,'0'),nvl(DEPTIDDES,' '),nvl(TEL,' '),nvl(RUNSTATEDES,' '), nvl(ADDRESS,' '),BDZID from V_BDZ where rownum<2000 and ZBRL is null ) a nvl(DEPTIDDES,' '),nvl(TEL,' '),nvl(RUNSTATEDES,' '),nvl(ADDRESS,' '), BDZID from V_BDZ where rownum<2000 and ZBRL is null )) as my_sys_rownum from ( nvl(DEPTIDDES,' '),nvl(TEL,' '),nvl(RUNSTATEDES,' '),nvl(ADDRESS,' '), BDZID from V_BDZ where rownum<2000 and ZBRL is not null order by ZBRL |
方案2:可以利用oracle中可以对order by中对比较字段做设置的方式来实现:
如: ……order by nvl( aaa,'-1')