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

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

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

CASE expr WHEN comparison_expr1 THEN return_expr1

[WHENcomparison_expr2THENreturn_expr2

WHENcomparison_exprnTHENreturn_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)+5000endas "工资" from emp;

//员工的工资

SQL> select ename ,job,

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

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

4end

5from 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,

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

5from 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;

ENAMEJOBCASEJOBWHEN'MANAGER'THENNVL(SA

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

SMITHCLERK1300

ALLENSALESMAN2900

WARDSALESMAN2750

JONESMANAGER7975

MARTINSALESMAN3650

BLAKEMANAGER7850

CLARKMANAGER7450

SCOTTANALYST3000

KINGPRESIDENT5000

TURNERSALESMAN2500

ADAMSCLERK1600

JAMESCLERK1450

FORDANALYST3000

MILLERCLERK1800

kou%kou%0

xiao%lin0

xiao%lin0

17 rows selected

SQL> select ename,job,decode(

2job,'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))

5as "工资" from emp;

ENAMEJOB工资

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

SMITHCLERK1300

ALLENSALESMAN2900

WARDSALESMAN2750

JONESMANAGER7975

MARTINSALESMAN3650

BLAKEMANAGER7850

CLARKMANAGER7450

SCOTTANALYST

KINGPRESIDENT

TURNERSALESMAN2500

ADAMSCLERK1600

JAMESCLERK1450

FORDANALYST

MILLERCLERK1800

kou%kou%

xiao%lin

xiao%lin

17 rows selected


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部