oracle(13)_SQL_单行函数_通用函数

版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_36260974/article/details/88699008

SQL

单行函数

通用函数

空值处理 nvl

范例:查询所有的雇员的年薪

  • 示例图:
    在这里插入图片描述
  • 我们发现很多员工的年薪是空的,原因是很多员工的奖金是 null,null 和任何数值计算都是 null,这时我们可以使用 nvl 来处理。
  • 示例图:
    在这里插入图片描述

Decode 函数

  • 该函数类似 if…else if…esle
  • 语法:
DECODE(col/expression, [search1,result1],[search2, result2]....[default])
--Col/expression:列名或表达式
--Search1,search2...:用于比较的条件
--Result1, result2...:返回值
  • 如果 col/expression 和 Searchi 匹配就返回 resulti,否则返回 default 的默认值
  • 示例图:
    在这里插入图片描述

范例:查询出所有雇员的职位的中文名

  • 示例图:
    在这里插入图片描述

case when

  • 分支用法,类似于Decode 函数
  • 语法:
CASE expr WHEN comparison_expr1 THEN return_expr1
         [WHEN comparison_expr2 THEN return_expr2
          WHEN comparison_exprn THEN return_exprn 
          ELSE else_expr]
END
  • 示例图:
    在这里插入图片描述
    以上操作完整源码:
--查询年薪,但发现有些为空
select ename,sal*12 + comm from emp;

--查询年薪
select ename, sal, nvl(comm, 0) pcomm from emp;

select ename, (sal*12 + nvl(comm, 0)) yearsal from emp;

--分支处理
select decode(2, 1, '我是1', 2, '我是2', '其他') from dual;

--设置职位中文名
select ename,
       decode(job,
              'CLERK',
              '业务员',
              'SALESMAN',
              '销售',
              'MANAGER',
              '经理',
              'ANALYST',
              '分析员',
              'PRESIDENT',
              '总裁',
              '无业') cjob
  from emp;

--case when 用法
select ename,
       (case
         when job = 'CLERK' then
          '业务员'
         when job = 'SALESMAN' then
          '销售'
         when job = 'MANAGER' then
          '经理'
         when job = 'ANALYST' then
          '分析员'
         when job = 'PRESIDENT' then
          '总裁'
         else
          '无业'
       end) cjob
  from emp;

如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/qq_36260974/article/details/88699008