decode与case when 函数
百度百科:
DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。
DECODE 中的if-then-else逻辑
在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:
DECODE(expr, if1, then1, if2,then2, if3,then3, . . . else )
expr表示一个表达式,可以是一个字段也可以是一个结果。当每个expr值被测试,如果expr的值为if1,Decode 函数的结果是then1;如果expr等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果expr结果不等于给出的任何配对时,Decode 结果就返回else 。
需要注意的是,这里的if、then及else 都可以是函数或计算表达式。
除此之外还有case...when...else...end的条件表达式。这二者是相同的,都是实现相同的功能,只是语法不同而已。
格式为:
case 表达式
when 表达式1 then 值1
when 表达式2 then 值2
when 表达式3 then 值3
else 默认值
end
SQL> select ename,decode(ename,'SMITH','史密斯','SCOTT','创始人','DAB管理员') from emp;
ENAME DECODE(ENAME,'SMITH','史密斯','SCOTT','创始人','DAB管理员')
---------- --------------------------------------------------
SMITH 史密斯
ALLEN DAB管理员
WARD DAB管理员
JONES DAB管理员
MARTIN DAB管理员
BLAKE DAB管理员
CLARK DAB管理员
SCOTT 创始人
KING DAB管理员
TURNER DAB管理员
ADAMS DAB管理员
JAMES DAB管理员
FORD DAB管理员
MILLER DAB管理员