Oracle DB NVL、NVL2、NULLIF、COALESCE函数(二)
LESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id), 'No commission and no manager') FROM employees;
LAST_NAME EMPLOYEE_ID COALESCE(TO_CHAR(COMMISSION_PCT),TO_CHAR
------------------------- ----------- ----------------------------------------
OConnell 198 124
Gietz 206 205
King 100 No commission and no manager
Bernstein 151 .25
在幻灯片中所示的示例中,如果manager_id值不为空,则会显示出来。如果manager_id值为空,则会显示commission_pct。如果manager_id和commission_pct值都为空,则会显示“No commission and no manager”。请注意,已应用TO_CHAR函数,所以所有表达式都具有相同的数据类型。
示例:
对于不领取佣金的雇员,你的组织想要将其薪金增加$2,000;对于领取佣金的雇员,在查询中应计算新的薪金,该薪金等于现有薪金加上佣金额。
hr@TEST0924> SELECT last_name, salary, commission_pct, COALESCE((salary+(commission_pct*salary)), salary+2000, salary) "New Salary" FROM employees; LAST_NAME SALARY COMMISSION_PCT New Salary ------------------------- ---------- -------------- ---------- OConnell 2600 4600 Bernstein 9500 .25 11875 Hall 9000 .25 11250
注:请检查输出。对于不领取佣金的雇员,New Salary 列显示增加了$2,000 后的薪金;对于领取佣金的雇员,New Salary 列显示计算的佣金额加上薪金。