首页 > IT知识 > Oracle中nvl、nvl2函数的用法以及Decode区别

Oracle中nvl、nvl2函数的用法以及Decode区别

2017年10月10日11:18:59来源:海文国际         68
分享到:
IT知识文章: 

Oracle中nvl、nvl2函数的用法以及Decode区别

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

NVL

格式:NVL(string1,replace_with)

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

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

selectnvl(sum(t.dwxhl),1)fromtb_jhdet就表示如果sum(t.dwxhl)=NULL就返回1

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

NVL2

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

结合

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

selectmonthid,decode(nvl(sale,6000),6000,'NG','OK')fromoutput

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

如果取较小值就是selectmonthid,decode(sign(sale-6000),-1,sale,6000)fromoutput,即达到取较小值的目的。

推荐阅读:

27个与游戏开发相关经典面试题,拿走不谢!