Oracle DB NVL、NVL2、NULLIF、COALESCE函数

Before 2013-10-20

  • 常规函数
下列函数可用于任何数据类型,且适合使用空值的场合:
• NVL (expr1, expr2)
• NVL2 (expr1, expr2, expr3)
• NULLIF (expr1, expr2)
• COALESCE (expr1, expr2, ..., exprn)
 
下列函数可用于任何数据类型,且适合表达式列表中使用空值的场合。
Oracle DB NVL、NVL2、NULLIF、COALESCE函数
 
  • NVL函数
将空值转换为实际值:
• 可以使用的数据类型为日期、字符和数字。
• 数据类型必须匹配:
– NVL(commission_pct,0)
– NVL(hire_date,'01-JAN-97')
– NVL(job_id,'NoJob Yet')
 
要将空值转换为实际值,请使用NVL函数。
语法
NVL (expr1, expr2)
在该语法中:
• expr1是可能包含空值的源值或表达式
• expr2是用于转换空值的目标值
可以使用NVL函数转换任意数据类型,但是返回值始终与expr1具有相同的数据类型
各种数据类型的NVL转换
Oracle DB NVL、NVL2、NULLIF、COALESCE函数
 
  • 使用NVL函数
hr@TEST0924> SELECT last_name, salary,NVL(commission_pct, 0),(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL FROM employees;
 
LAST_NAME SALARY NVL(COMMISSION_PCT,0) AN_SAL
------------------------- ---------- --------------------- ----------
OConnell 2600 0 31200
Khoo 3100 0 37200
Vargas 2500 0 30000
Russell 14000 .4 235200
Bernstein 9500 .25 142500
 
 
要计算所有雇员的年度报酬,需要将月薪乘以12,然后再加上佣金百分比:
hr@TEST0924> SELECT last_name, salary, commission_pct, (salary*12) + (salary*12*commission_pct) AN_SAL FROM employees;
 
LAST_NAME SALARY COMMISSION_PCT AN_SAL
------------------------- ---------- -------------- ----------
OConnell 2600
Vargas 2500
Russell 14000 .4 235200
Taylor 3200
 
请注意,仅为那些领取佣金的雇员计算了年度报酬。如果表达式中的任何列值为空,则结果也为空。要计算所有雇员的年度报酬,必须将空值转换为数字,然后才能应用算术运算符。在示例中,NVL函数用于将空值转换为零。

相关阅读

相关推荐