decode 函式的用法
阿新 • • 發佈:2019-01-10
轉載自https://blog.csdn.net/weeknd/article/details/71157044
decode 函式基本語法:
decode(欄位|表示式,條件1,結果1,條件2,結果2,...,條件n,結果n,預設值); --預設值可以省略
decode 函式 用法:
1.使用decode 判斷字串是否一樣
sql 測試:
1 select empno, 2 decode(empno, 3 7369,'smith', 4 7499,'allen', 5 7521,'ward', 6 7566,'jones', 7 'unknow') as name 8 from emp 9 where rownum<=10;
2.使用decode 函式比較大小
輸出兩個數中的較小值:
select decode(sign(var1-var2),-1,var 1,var2) from dual
示例:
select decode(sign(100-90),-1,100,90) from dual;
3.使用decode 函式分段
設 工資大於等於5000為高薪,大於等於3000且小於5000為中薪,低於3000為低薪 則每個人的工資水平是...?
1 selecte.ename ,e.sal, 2 decode(sign(e.sal-5000), 3 1, 'high sal', 4 0, 'hign sal', 5 -1, 6 decode(sign(e.sal-3000), 7 1, 'mid sal', 8 0, 'mid sal', 9 -1,'low sal' 10 ) 11 ) 12 as "工資等級" 13 from scott.emp e;
4.利用decode實現表或者試圖的行列轉換
1 select 2 sum(decode(e.ename,upper('smith'),sal,0)) smith, 3 sum(decode(e.ename,upper('allen'),sal,0)) allen, 4 sum(decode(e.ename,upper('ward'),sal,0)) ward, 5 sum(decode(e.ename,upper('jones'),sal,0)) jones, 6 sum(decode(e.ename,upper('martin'),sal,0)) martin 7 from scott.emp e ;
sum 函式的用法 ?
5.使用decode函式來使用表示式來搜尋字串
decode函式 比較表示式和搜尋字。如果匹配,返回結果;如果不匹配,返回default值;如果未定義default值,則返回空值。
1 select 2 sum(decode(e.ename,upper('smith'),sal,0)) smith, 3 sum(decode(e.ename,upper('allen'),sal,0)) allen, 4 sum(decode(e.ename,upper('ward'),sal,0)) ward, 5 sum(decode(e.ename,upper('jones'),sal,0)) jones, 6 sum(decode(e.ename,upper('martin'),sal,0)) martin 7 from scott.emp e ;