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

猜你喜欢

转载自blog.csdn.net/zhengyikuangge/article/details/79710883