1 通用函数
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
COALESCE (expr1, expr2, …, exprn)
2 NVL函数
将一个空值转换为一个实际的值。
参数的数据类型必须匹配
数据的类型可以是日期,字符或数值。
如:
NVL(commission_pct,0)
NVL(hire_date,‘01-JAN-97’)
NVL(job_id,‘No Job Yet’)
NVL(expr1,expr2)
如果expr1为null,则返回expr2,其中expr1的数据类型要和expr2的数据类型匹配。
如:
SELECT last_name, salary, commission_pct, (salary*12) +nvl( (salary*12*commission_pct) ,0) AN_SAL
FROM employees;
统计公司所有员工的一年收入:工资+奖金,注意此时如果奖金比例为空,则计算出来的奖金则为空,再和工资做加法运算时,仍为空,也就是空值无法做运算,所以使用nvl函数将空值转化为0,再进行运算。
3 NVL2函数
NVL2(expr1, expr2, expr3)
如果第一个参数是非空,则返回第二个参数的值,如果第一个参数为空,则返回第三个参数的值。
注:expr1可以是任意数据类型,expr2和expr3不能是LONG。
SELECT last_name, salary, commission_pct,NVL2(commission_pct,'SAL+COMM', 'SAL') income
FROM employees WHERE department_id IN (50, 80);
输出员工的姓名,工资,奖金百分比,如果奖金百分比为空,则输出工资,如果奖金百分比为非空,则输出工资和奖金的和。
4 COALESCE函数
返回列表中的第一个非空值
COALESCE (expr1, expr2, … exprn)
注意:所有的参数数据类型一样。
如:
SELECT last_name, employee_id,COALESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id),'No commission and no manager')
FROM employees;
输出员工信息,根据员工的奖金信息和领导信息,输出第一个非空值,也就是员工要么有奖金,要么有领导,要么两者都没有。
5 练习题:
描述如下SQL的含义:
SELECT last_name, salary, commission_pct,
COALESCE((salary+(commission_pct*salary)), salary+2000)“New Salary”
FROM employees;
【答题小贴士】:
1、以墨天轮文章的形式解析题目并给出答案
2、将墨天轮文章链接发送到此文的评论区
’




