Oracle一些通用函数

  通用函数

--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后面!

猜你喜欢

转载自blog.csdn.net/binguola/article/details/80279122