日期:2014-05-16  浏览次数:20405 次

Oracle排序中NULL值处理的五种常用方法

引自:

http://www.cnblogs.com/ethanwooblog/archive/2009/04/03/2092704.html

?

1、缺省处理
?
Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前
2、使用nvl函数
?
nvl函数可以将输入参数为空时转换为一特定值,如
nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
3、使用decode函数
?
decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一特定值,如
decode(employee_name,null,’张三’, employee_name)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
4、使用case?语法
?
Case语法是Oracle?9i后开始支持的,是一个比较灵活的语法,同样在排序中也可以应用
如:
select?*
?
from?employee
?
order?by? (case?employee_name
????????????
when?null?then
?????????????
'张三'
????????????
else
?????????????
employee_name
??????????
end