您的位置:首页 > 其它

分支结构

2013-11-14 15:51 246 查看
分支结构

if expr1
then
action1
elif expr2
then
action2
else
default action
fi

decode 

decode (expr,
search1,result1,
search2,result2,
search3,result3,
default)

case

SQL> select ename,deptno,decode(deptno,
10,'AAAA',
20,'BBBB',
'CCCC') from emp order by 2;

ENAME        DEPTNO DECO
-
4000
--------- ---------- ----
CLARK    10 AAAA
KING    10 AAAA
MILLER    10 AAAA
JONES    20 BBBB
FORD    20 BBBB
ADAMS    20 BBBB
SMITH    20 BBBB
SCOTT    20 BBBB
WARD    30 CCCC
TURNER    30 CCCC
ALLEN    30 CCCC
JAMES    30 CCCC
BLAKE    30 CCCC
MARTIN    30 CCCC

14 rows selected.

SQL> 

练习:
按部分编号涨工资(只打印) 10号部门涨10% 20号部分涨20% 其他部分涨30%

case

简单case实现的是等值比较(表达式在when之前)
SQL> select ename,sal,case deptno when 10 then 'AAA'
     when 20 then 'BBB'
     else 'CCC'
          end
     from emp order by deptno;
SQL> 

ENAME   SAL CAS
---------- ---------- ---
CLARK  2450 AAA
KING  5000 AAA
MILLER  1300 AAA
JONES  2975 BBB
FORD  3000 BBB
ADAMS  1100 BBB
SMITH   800 BBB
SCOTT  3000 BBB
WARD  1250 CCC
TURNER  1500 CCC
ALLEN  1600 CCC
JAMES   950 CCC
BLAKE  2850 CCC
MARTIN  1250 CCC

14 rows selected.

搜索case实现的是不等值比较(表达式在when之后)
SQL>  select ename,sal,case  when sal<=1000  then sal+1
          when sal>1000 and sal<=2000 then sal+2
          when sal>2000 and sal<=3000 then sal+3
          else sal+4
     end  "up_sal"
   from emp order by sal;

ENAME   SAL
  up_sal
---------- ---------- ----------
SMITH   800
     801
JAMES   950
     951
ADAMS  1100
    1102
WARD  1250
    1252
MARTIN  1250
    1252
MILLER  1300
    1302
TURNER  1500
    1502
ALLEN  1600
    1602
CLARK  2450
    2453
BLAKE  2850
    2853
JONES  2975
    2978
SCOTT  3000
    3003
FORD  3000
    3003
KING  5000
    5004

14 rows selected.

SQL> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: