oracle 排序过程中null的显示问题

本文介绍了在Oracle数据库中如何处理带有NULL值的字段排序问题,提供了三种有效的方法:使用NVL函数、使用其他函数如DECODE或CASE,以及使用NULLSFIRST或NULLSLAST关键字。并附带说明了数据库设置及编程语言层面的处理建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
    在平时的业务处理中,经常遇到要对业务数据进行排序,并且要对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
    经过上述方法的比较,第三种方法比较方便。

转载网址:http://blog.youkuaiyun.com/heartdiamond/article/details/6057562

补充:

        如果数据库允许的话,可以在数据库中直接设置默认值

       如果数据库不允许,也可以在java实体类中为该字段设置默认值

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值