1. 程式人生 > >Oracle 條件語句——decode與case

Oracle 條件語句——decode與case

decode

語法如下:
decode(某列名,條件1,結果1,條件2,結果2….條件n,結果n,預設值);
注意:
1、某條件與對應的結果成對出現,滿足條件1則返回結果1,滿足條件2則返回結果2….;
2、預設值表示不滿足前面所有條件的返回值;
3、如果條件重複,則返回預設值。

例如:

SQL> select dname,decode(dname,'ACCOUNTING','財政部','SALES','銷售部','其他部門
) 部門名 from dept;

/*
DNAME          部門名
-------------- --------
ACCOUNTING     財政部
RESEARCH       其他部門
SALES          銷售部
OPERATIONS     其他部門
*/

case

第一種:

SQL> select case dname
  2  when 'ACCOUNTING' then '財政部'
  3  when 'SALES' then '銷售部'
  4  else '其他部門' end 部門名
  5  from dept;

/*CASEDNAM
--------
財政部
其他部門
銷售部
其他部門*/

注意:
1、case後是列名;
2、when then成對出現,when後面是表示式 then是結果;
3、else 是不滿足前面所有的when 的返回值 end是關鍵字。

第二種

SQL> select ename, case
  2
when sal between 0 and 2000 then '低工資' 3 when sal between 2000 and 3000 then '一般工資' 4 when sal > 3000 then '高工資' else 'error' end 5 from emp; /* ENAME CASEWHEN ---------- -------- SMITH 低工資 ALLEN 低工資 WARD 低工資 JONES 一般工資 MARTIN 低工資 BLAKE 一般工資 CLARK 一般工資 SCOTT 一般工資 KING 高工資 TURNER 低工資 ADAMS 低工資 ENAME CASEWHEN ---------- -------- JAMES 低工資 FORD 一般工資 MILLER 低工資 已選擇14行。 */

注意:
case後不需要再加列名;