暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【每日一练 007】SQL : 单行函数(四)

原创 李美静 2020-06-24
741

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、将墨天轮文章链接发送到此文的评论区

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论