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/tech/aiops/7249.html