decode的介紹與使用

2021-09-30 15:48:23 字數 1831 閱讀 1497

decode的幾種用法

1:使用decode判斷字串是否一樣

decode(value,if1,then1,if2,then2,if3,then3,...,else)

含義為if 條件=值1 then

return(value 1)

elsif 條件=值2 then

return(value 2)

......

elsif 條件=值n then

return(value 3)

else

return(default)

end if

2:使用decode比較大小

select decode(sign(var1-var2),-1,var 1,var2) from dual

sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1

sql測試

select decode(sign(100-90),-1,100,90) from dual

輸出結果

90100-90=10>0 則會返回1,所以decode函式最終取值為90

反正select decode(sign(100-90),1,100,90) from dual

輸出結果

100100-90=10>0返回1,判斷結果為1,返回第乙個變數100,最終輸出結果為100

3:使用decode函式分段

工資大於5000為高薪,工資介於3000到5000為中等,工資小於3000為低薪

sql測試

select ename,sal,

decode(sign(sal - 5000), 1, 'high sal', 0,  'high sal',  - 1,

decode(sign(sal - 3000),1, 'mid sal', 0, 'mid sal',  - 1,

decode(sign(sal - 1000),1, 'low sal',0, 'low sal',   - 1,   'low sal')))

from emp

4:利用decode實現表或者試圖的行列轉換

sql測試

select 

sum(decode(ename,'smith',sal,0))  smith,

sum(decode(ename,'allen',sal,0))  allen,

sum(decode(ename,'ward',sal,0))   ward,

sum(decode(ename,'jones',sal,0))  jones,

sum(decode(ename,'martin',sal,0)) martin from emp

輸出結果如下

smith  allen  ward   jones  martin

800  1600   1250       2975       1250

5:使用decode函式來使用表示式來搜尋字串

decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)

decode函式比較表示式和搜尋字,如果匹配,返回結果;如果不匹配,返回default值;如果未定義default值,則返回空值。

sql測試

select ename,sal,

decode(instr(ename, 's'), 0,'不含有s', '含有s') as info

from emp

oracle的decode 含義及使用介紹

含 釋 decode 條件,值1,返回值1,值2,返回值2,值n,返回值n,預設值 該函式的含義如下 if 條件 值1 then return 翻譯值1 elsif 條件 值2 then return 翻譯值2 elsif 條件 值n then return 翻譯值n else return 預設值...

DECODE函式的使用

decode函式是oracle pl sql是功能強大的函式之一,目前還只有oracle公司的sql提供了此函式,其他資料庫廠商的sql實現還沒有此功能。decode有什麼用途呢?先構造乙個例子,假設我們想給智星職員加工資,其標準是 工資在8000元以下的將加20 工資在8000元以上的加15 通常...

SQL中 decode 函式介紹

decode 函式的語法 1 select decode columnname,值1,翻譯值1,值2,翻譯值2,值n,翻譯值n,預設值 2 3 from talbename 4 5 where 其中 columnname為要選擇的table中所定義的column 預設值可以是你要選擇的column ...