您的位置:首页 > 数据库 > Oracle

oracle的null值排序问题

2018-03-30 08:22 253 查看

ORACLE中null的排序问题

关键字: oracle nulls问题描述:
    在平时的业务处理中,经常遇到要对业务数据进行排序,并且要对null值也做相应的排序。在Oracle中,进行Order by排序时缺省认为null是最大值,所以如果是ASC升序则被排在最后,而DESC降序则排在最前。有的时候我们需要在降序排列时,同时要将null的数据排到最后,应该如何处理。   

问题处理:
方法1:使用nvl函数
语法:Nvl(expr1, expr2)
    若EXPR1是NULL,則返回EXPR2,否則返回EXPR1. 
    SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1; 

    认识了NVL的语法,就可以在排序中使用,如: ORDER BY NVL(FIELD, '0')

方法2:使用其它函数,如decode,case。

方法3:nulls first或nulls last
语法:
    Nulls first:表示null值的记录将排在最前
    Nulls last:表示null值的记录将排在最后
    --null值始终放在最前面
    select * from ac01 order by aac001 asc nulls first
    --null值始终放在最后面
    select * from ac01 order by aac001 desc nulls last

    经过上述方法的比较,第三种方法比较方便。
转载自:https://blog.csdn.net/heartdiamond/article/details/6057562
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: