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后不需要再加列名;