版权声明:如需转载,请注明出处 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;
如有错误,欢迎指正!