Oracle decode函數(shù)用法詳解
一 兩種語法格式
1 decode(expression,value,result1,result2)
如果expression=value,則輸出result1,否則輸出result2
例子:

(1+2=3,輸出a)

(1+2≠4,輸出b)
2 decode(expression,value1,result1,value2,result2,value3,result3......,default)
如果expression=value1,則輸出result1,expression=value2,輸出reslut2,expression=value3,輸出result3,
若expression不等于所列出的所有value,則輸出為default
例子:

(score=100,輸出'NO.1',score='90',輸出‘NO.2’,score='70',輸出‘NO.3’,其他值輸出'Other')
二 應(yīng)用
1 使用decode函數(shù)分段
將成績表中分?jǐn)?shù)大于90分的分為優(yōu)秀,80~90分為良好,70~80分為中等,60~70分為及格,60分以下為不及格。

(sign()函數(shù)的作用是,判斷參數(shù)的值大于0則返回1,等于0則返回0,小于0則返回-1;
如圖,當(dāng)socre大于或等于90時,socre-90>=0,sign()函數(shù)返回1或0,則輸出‘優(yōu)秀’,
在score-90<0的情況下,再判斷socre-80,socre-80>=0,sign()函數(shù)返回1或0,則輸出‘良好’,
以此類推,用decode()的嵌套配合sign()函數(shù)來實(shí)現(xiàn)對分?jǐn)?shù)的分段以及相應(yīng)的輸出,
最后60分以下的就default為‘不及格’就可以了,可以看到我們的Tony老師的分?jǐn)?shù)就不及格了)
2 使用decode函數(shù)對表做行列轉(zhuǎn)換

如圖所示,有一張三個科目的成績表,各科目名稱和相應(yīng)的分?jǐn)?shù)呈現(xiàn)在行中,
現(xiàn)想將各科目名稱轉(zhuǎn)換為列名,每列的內(nèi)容為對應(yīng)科目的分?jǐn)?shù)。

如圖,先用decode函數(shù)判斷subject為Chinese時,輸出score,不為Chinese時,輸出為NULL,
因?yàn)楣灿腥齻€科目,所以輸出其中一個科目的分?jǐn)?shù)時,其他科目的分?jǐn)?shù)為NULL,這里只需要
用sum()函數(shù)來實(shí)現(xiàn)聚合的作用,將空值去除掉就可以了)

sum()函數(shù)分別將name為John的每個列的值相加,如Chinese列,80+NULL+NULL=80,再將name為Will的每個列的值相加,然后group by將name分組,最終達(dá)到如上圖聚合的效果)
到此這篇關(guān)于Oracle decode函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)Oracle decode函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle截取字符(substr)檢索字符位置(instr)示例介紹
本節(jié)主要介紹了oracle截取字符(substr)檢索字符位置(instr)的使用,需要的朋友可以參考下2014-07-07
Oracle 12c實(shí)現(xiàn)手工建庫而非CDB及CDB創(chuàng)建的方法
這篇文章主要給大家介紹了關(guān)于Oracle 12c實(shí)現(xiàn)手工建庫而非CDB及CDB創(chuàng)建的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用oracle 12c具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
Oracle?19c創(chuàng)建數(shù)據(jù)庫的完整步驟(詳細(xì)明了)
Oracle19c可以用于創(chuàng)建數(shù)據(jù)庫與表空間,創(chuàng)建表空間特別慢是因?yàn)楹笈_進(jìn)程多,拉低進(jìn)程速度導(dǎo)致的,下面這篇文章主要給大家介紹了關(guān)于Oracle?19c創(chuàng)建數(shù)據(jù)庫的完整步驟,需要的朋友可以參考下2023-04-04
Oracle中幾種常見的數(shù)據(jù)庫錯誤類型及處理方法
處理常見的數(shù)據(jù)庫錯誤是數(shù)據(jù)庫管理的重要組成部分,以下是幾種常見的數(shù)據(jù)庫錯誤類型及其處理方法,結(jié)合具體代碼示例,以幫助你更好地解決這些問題,感興趣的小伙伴跟著小編一起來看看吧2024-09-09
WINDOWS下使用DOS命令行連接oracle數(shù)據(jù)庫
本文講述了通過windows下的DOS命令連接oracle數(shù)據(jù)庫并進(jìn)行簡單操作的方法2018-03-03
Oracle數(shù)據(jù)庫在windows系統(tǒng)上重啟步驟
有時候在服務(wù)中重啟了oracle之后,數(shù)據(jù)庫并不能正常訪問,下面這篇文章主要介紹了Oracle數(shù)據(jù)庫在windows系統(tǒng)上重啟的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-09-09
Oracle 11g數(shù)據(jù)庫安裝與卸載的方法圖解
如果小編使用的是win7系統(tǒng),最好采用11g,否則很可能10g出現(xiàn)不兼容安裝不成功的情況。下面給大家分享Oracle 11g數(shù)據(jù)庫安裝與卸載的方法圖解,非常不錯,感興趣的朋友一起看看吧2016-09-09

