
一、NVL函数是一个空值转换函数
1、NVL(表达式1,表达式2)
如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。
对数字型: NVL( comm,0);
对字符型 NVL( TO_CHAR(comm), 'No Commission')
对日期型 NVL(hiredate,' 31-DEC-99')
例子:
select ename,NVL(TO_char(comm), ename||' is not a salesperson!') AS COMMISSION
from emp
2、NVL2(表达式1,表达式2,表达式3)
如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。
例如 NVL2(comm,'sal+comm',sal)
NVL2函数测试comm
如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。
二、decode 函数基本语法:
decode(字段|表达式,条件1,结果1,条件2,结果2,...,条件n,结果n,缺省值); --缺省值可以省略
表示如果 字段|表达式 等于 条件1 时,DECODE函数的结果返回 条件1 ,...,如果不等于任何一个条件值,则返回缺省值。
【注意】:decode 函数 ,只能在select 语句用。
举个简单例子:
decode(t.status,1,'1',2,'2')对应if t.status=1 { 1 }else if(t.status=2){2}
本文详细介绍了Oracle SQL中的NVL和NVL2函数,用于处理空值情况,以及DECODE函数,用于条件判断。NVL函数将NULL转换为指定值,NVL2提供更复杂的条件判断,而DECODE则类似于多条件的IF语句。
1313

被折叠的 条评论
为什么被折叠?



