oracle的order by排序中空字符串处理方法

oracle的orderby排序中空字符串处理方法

1、缺省处理

Oracle在Orderby时缺省认为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语法是Oracle9i后开始支持的,是一个比较灵活的语法,同样在排序中也可以应用

如:

select*

fromemployee

orderby(caseemployee_name

whennullthen

'张三'

else

employee_name

end)

表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name

通过case语法同样可以定制null的排序位置。

5、使用nullsfirst或者nullslast语法

Nullsfirst和nullslast是OracleOrderby支持的语法

如果Orderby中指定了表达式Nullsfirst则表示null值的记录将排在最前(不管是asc还是desc)

如果Orderby中指定了表达式Nullslast则表示null值的记录将排在最后(不管是asc还是desc)

使用语法如下:

--将nulls始终放在最前

select*fromzl_cbqcorderbycb_ldnullsfirst

--将nulls始终放在最后

select*fromzl_cbqcorderbycb_lddescnullslast

相关推荐