case when 与 decode 用法详解程序员

case when 在不同条件需要有不同返回值的情况下使用非常方便,可以在给变量赋值时使用,也可以在select查询语句中使用。
case搜索语句格式:

case
 when 条件1 then 返回值1
 when 条件2 then 返回值2
 …
 else 返回值N 

end;

case when使用示例代码:

select empno,ename,job, 
       case  
         when sal between 0 and 1500  
           then 'low salary' 
         when sal between 1500 and 3000 
           then 'middle salary' 
         when sal between 3000 and 5000 
           then 'high salary' 
       end case  
from emp

用case when处理空值:

select case  
       when comm is null  
         then 0 
       else comm 
       end comm 
 from emp

decode的使用格式:decode(变量或表达式,值1,返回值1,值2,返回值2,…,默认值)

decode使用示例代码:

select empno,ename,job, 
       decode(job,'CLERK','low degree', 
              'SALESMAN','middle degree', 
              'others')  degree 
from emp   

decode处理空值:

SELECT empno,ename, 
       decode(comm,NULL,0,comm) 
FROM emp

case when 和decode的比较:

一、decode是pl/sql语法,只能在oracle中使用,casewhen是标准SQL的语法,哪儿都能用,也就是说移植性更强.

二、case 里可以写>,in等表达式,decode只是=

三、建函数索引的时候用decode比较好,oracle会自动转换case when导致无法使用到索引

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/7249.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论