SQL> select ename,deptno,
decode(deptno,
10,‘AAAA‘,
20,‘BBBB‘,
‘CCCC‘)
from emp order by 2;
ENAME DEPTNO DECO
---------- ---------- ----
CLARK 10 AAAA
KING 10 AAAA
MILLER 10 AAAA
JONES 20 BBBB
FORD 20 BBBB
ADAMS 20 BBBB
SMITH 20 BBBB
SCOTT 20 BBBB
WARD 30 CCCC
TURNER 30 CCCC
ALLEN 30 CCCC
JAMES 30 CCCC
BLAKE 30 CCCC
MARTIN 30 CCCC
14 rows selected.
简单case实现的是等值比较(表达式在when之前)
SQL> select ename,sal, case deptno when 10 then ‘AAA‘ when 20 then ‘BBB‘ else ‘CCC‘ end from emp order by deptno; SQL> ENAME SAL CAS ---------- ---------- --- CLARK 2450 AAA KING 5000 AAA MILLER 1300 AAA JONES 2975 BBB FORD 3000 BBB ADAMS 1100 BBB SMITH 800 BBB SCOTT 3000 BBB WARD 1250 CCC TURNER 1500 CCC ALLEN 1600 CCC JAMES 950 CCC BLAKE 2850 CCC MARTIN 1250 CCC 14 rows selected.
搜索case实现的是不等值比较(表达式在when之后)
SQL> select ename,sal,case when sal<=1000 then sal+1 when sal>1000 and sal<=2000 then sal+2 when sal>2000 and sal<=3000 then sal+3 else sal+4 end "up_sal" from emp order by sal; ENAME SAL up_sal ---------- ---------- ---------- SMITH 800 801 JAMES 950 951 ADAMS 1100 1102 WARD 1250 1252 MARTIN 1250 1252 MILLER 1300 1302 TURNER 1500 1502 ALLEN 1600 1602 CLARK 2450 2453 BLAKE 2850 2853 JONES 2975 2978 SCOTT 3000 3003 FORD 3000 3003 KING 5000 5004 14 rows selected.
原文:https://www.cnblogs.com/marxist/p/12110927.html