Oracle通用函数
--------------------------------------------Oracle通用函数--------------------------------------------------
1.空值处理nvl
范例:查询所有的雇员的年薪
我们发现很多员工的年薪是空的,原因是很多员工的奖金是null,null和任何数值计算都是null,这时我们可以使用nvl来处理。
2.Decode函数
该函数类似if....else if...esle
语法:DECODE(col/expression, [search1,result1],[search2,result2]....[default])
Col/expression:列名或表达式
Search1,search2...:用于比较的条件
Result1, result2...:返回值
如果col/expression和Searchi匹配就返回resulti,否则返回default的默认值
范例:查询出所有雇员的职位的中文名
3.case when
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHENcomparison_expr2 THEN return_expr2
WHENcomparison_exprn THEN return_exprn
ELSE else_expr]
END
select t.empno,
t.ename,
case
when t.job = 'CLERK'then
'业务员'
when t.job = 'MANAGER'then
'经理'
when t.job = 'ANALYST'then
'分析员'
when t.job = 'PRESIDENT'then
'总裁'
when t.job = 'SALESMAN'then
'销售'
else
'无业'
end
from emp t
代码示例:
select * from emp
select ename,sal*12,nvl(comm,0) from emp --空值和数值计算最后会得到空,使用nvl(带有空值得列表, 代替空值得数)来将空转换为数值
select ename,sal*12+nvl(comm,0) from emp --计算员工的年薪
select decode(1,1,'我是1',2,'我是2','其他') from dual --分支查询,第一个参数为要查询的参数,第二个参数是匹配的参数,第三个参数为匹配后的结果
select ename, decode(job, 'CLERK', '业务员', 'SALESMAN', '推销员', 'MANAGER', '经理', 'ANALYST', '分析员', 'PRESIDENT', '总裁', '无业') cjob from emp --将员工的工作用中文显示
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 --将员工的工作用中文显示 |