码迷,mamicode.com
首页 > 数据库 > 详细

Oracle中的 Decode和nvl 函数的用法及区别?

时间:2015-01-08 18:06:40      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:decode   oracle函数   nvl   nvl2   sign   

Decode

decode(条件,值1,翻译值1,值2,翻译值2,...,缺省值)    该函数与程序中的 If...else if...else 意义一样

NVL

格式:NVL( string1, replace_with)

功能如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换

select nvl(sum(t.dwxhl),1) from tb_jhde t  就表示如果sum(t.dwxhl) = NULL 就返回 1

Oracle在NVL函数的功能上扩展,提供了NVL2函数

NVL2

nvl2 (E1, E2, E3) 的功能为:如果E1为NULL,则函数返回E3,否则返回E2

结合

Decode 和 NVL等函数 常常结合使用,例如

select monthid,decode(nvl(sale,6000),6000,‘NG‘,‘OK‘) from output


sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1,

如果取较小值就是 select monthid,decode(sign(sale-6000),-1,sale,6000) from output,即达到取较小值的目的。



Oracle中的 Decode和nvl 函数的用法及区别?

标签:decode   oracle函数   nvl   nvl2   sign   

原文地址:http://blog.csdn.net/xiaokui_wingfly/article/details/42525519

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!