通用函数
--nvl函数 NVL(参数1,参数2)
selectnvl(null,'空') from dual;
selectnvl('非空','我不会输出') from dual;
--decode函数decode(参数一,参数二,参数三,....)
语法:
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
使用decode函数编写一个查询,使其按照以下数据根据job列的值显示所有员工的级别,同时显示员工的姓名
select ename,job,
decode(job,
'PRESIDENT','A',
'MANAGER','B',
'ANALYST','C',
'SALESMAN','D',
'CLERK','E'
'0') as grade
from emp;
结果:
ENAME JOB GRADE---------- --------- -----
SMITH CLERK E
ALLEN SALESMAN D
WARD SALESMAN D
JONES MANAGER B
MARTIN SALESMAN D
BLAKE MANAGER B
CLARK MANAGER B
SCOTT ANALYST C
KING PRESIDENT A
TURNER SALESMAN D
ADAMS CLERK E
JAMES CLERK E
FORD ANALYST C
MILLER CLERK E
相当于if(){}
else if(){}
else if(){}
。。。
else{}(最后那个0)
--case when
使用case语法重写一遍上题
select ename,job,
case job
when'PRESIDENT' then'A'
when 'MANAGER' then'B'
when 'ANALYST' then'C'
when 'SALESMAN' then 'D'
when 'CLERK' then 'E'
else '0'
end grade
from emp;
ENAME JOB GRADE
---------- --------- -----
SMITH CLERK E
ALLEN SALESMAN D
WARD SALESMAN D
JONES MANAGER B
MARTIN SALESMAN D
BLAKE MANAGER B
CLARK MANAGER B
SCOTT ANALYST C
KING PRESIDENT A
TURNER SALESMAN D
ADAMS CLERK E
JAMES CLERK E
FORD ANALYST C
MILLER CLERK E
别名起在end后面!