首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

oracle札记(十三)条件表达式

2012-07-24 
oracle笔记(十三)条件表达式条件表达式 :IF-THEN-ELSE 逻辑CASE expr WHEN comparison_expr1 THEN return_

oracle笔记(十三)条件表达式

条件表达式 :IF-THEN-ELSE 逻辑

CASE expr WHEN comparison_expr1 THEN return_expr1

???????? [WHEN comparison_expr2 THEN return_expr2

????????? WHEN comparison_exprn THEN return_exprn

????????? ELSE else_expr]

END

?

DECODE(col|expression, search1, result1

????? ?????????? ???[, search2, result2,...,]

????? ?????????? ???[, default])

?

//为职位是Manager的员工发放5000元的奖金

SQL> select ename,job,case job when 'MANAGER' then nvl(sal,0)+5000? end? as "工资" from emp;

//员工的工资

SQL> select ename ,job,

? 2? case job when 'MANAGER' then nvl(sal,0)+5000+nvl(comm,0)

? 3? else nvl(sal,0)+nvl(comm,0)

? 4? end

? 5? from emp;

//改写成 decode的写法

SQL> select ename,job

? 2? ,decode(job,'MANAGER', nvl(sal,0)+5000+nvl(comm,0),

? 3? 'CLERK',nvl(sal,0)+nvl(comm,0)+200,

? 4? nvl(sal,0)+nvl(comm,0)) as "工资"

?5? from emp;

//作业: 当员工为Manger 加5000员? 当员工为SALESMAN 加1000 当员工为 clerk加500

SQL> select ename,job,case job when 'MANAGER' then nvl(sal,0)+5000+nvl(comm,0)

when 'SALESMAN' then nvl(sal,0)+1000+nvl(comm,0)

?when 'CLERK'then nvl(sal,0)+500+nvl(comm,0)

else nvl(sal,0)+nvl(comm,0)

end from emp;

ENAME????? JOB?????? CASEJOBWHEN'MANAGER'THENNVL(SA

---------- --------- ------------------------------

SMITH????? CLERK?????????????????????????????? 1300

ALLEN????? SALESMAN??????????????????????????? 2900

WARD?????? SALESMAN???????? ???????????????????2750

JONES????? MANAGER???????????????????????????? 7975

MARTIN???? SALESMAN??????????????????????????? 3650

BLAKE????? MANAGER???????????????????????????? 7850

CLARK????? MANAGER???????????????????????????? 7450

SCOTT????? ANALYST????? ???????????????????????3000

KING?????? PRESIDENT?????????????????????????? 5000

TURNER???? SALESMAN??????????????????????????? 2500

ADAMS????? CLERK?????????????????????????????? 1600

JAMES????? CLERK?????????????????????????????? 1450

FORD?????? ANALYST? ???????????????????????????3000

MILLER???? CLERK?????????????????????????????? 1800

kou%kou%????????????????????????????????????????? 0

xiao%lin????????????????????????????????????????? 0

xiao%lin????????????????????????????????????????? 0

?

17 rows selected

SQL> select ename,job,decode(

? 2? job,'MANAGER',nvl(sal,0)+5000+nvl(comm,0),

? 3? 'SALESMAN',nvl(sal,0)+1000+nvl(comm,0),

? 4? 'CLERK',nvl(sal,0)+500+nvl(comm,0))

? 5? as "工资" from emp;

ENAME????? JOB?????????????? 工资

---------- --------- ----------

SMITH????? CLERK?????????? 1300

ALLEN????? SALESMAN??????? 2900

WARD?????? SALESMAN??????? 2750

JONES????? MANAGER???????? 7975

MARTIN???? SALESMAN??????? 3650

BLAKE????? MANAGER???????? 7850

CLARK????? MANAGER???????? 7450

SCOTT????? ANALYST? ?

KING?????? PRESIDENT

TURNER???? SALESMAN??????? 2500

ADAMS????? CLERK?????????? 1600

JAMES????? CLERK?????????? 1450

FORD?????? ANALYST??

MILLER???? CLERK?????????? 1800

kou%kou%????????????

xiao%lin????????????

xiao%lin????????????

?

17 rows selected

?

热点排行