Oracle進(jìn)階DECODE函數(shù)使用詳解
DECODE含義
decode(條件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
這個(gè)是decode的表達(dá)式,具體的含義解釋為:
IF 條件=值1 THEN RETURN(翻譯值1) ELSIF 條件=值2 THEN RETURN(翻譯值2) ...... ELSIF 條件=值n THEN RETURN(翻譯值n) ELSE RETURN(缺省值) END IF
DECODE的用法
這里主要說的就是decode的用法,在很多時(shí)候這個(gè)函數(shù)還是很有用的。
1.翻譯值
數(shù)據(jù)截圖:

需求:查詢出的數(shù)據(jù),1表示男生,2表示女生
select t.id,
t.name,
t.age,
decode(t.sex, '1', '男生', '2', '女生', '其他') as sex
from STUDENT2 t
結(jié)果:

2.decode比較大小
說明:sign(value)函數(shù)會(huì)根據(jù)value的值為0,正數(shù),負(fù)數(shù),分別返回0,1,-1
數(shù)據(jù):

需求:年齡在20以上的顯示20以上,20以下的顯示20以下,20的顯示正好20
select t.id,
t.name,
t.age,
decode(sign(t.age - 20),
1,
'20以上',
-1,
'20以下',
0,
'正好20',
'未知') as sex
from STUDENT2 t
結(jié)果:

3.decode分段
數(shù)據(jù)暫無
需求:工資大于5000為高薪,工資介于3000到5000為中等,工資小于3000為底薪
select name,
sal,
decode(sign(sal - 5000),
1,
'高薪',
0,
'高薪',
-1,
decode(sign(sal - 3000), 1, '中等', 0, '中等', -1, '低薪')) as salname
from person;
結(jié)果暫無
4.搜索字符串
數(shù)據(jù):

需求:找到含有三的姓名
select t.id,
decode(instr(t.name, '三'), 0, '姓名不含有三', '姓名含有三') as name,
t.age,
t.sex
from STUDENT2 t
結(jié)果:

5.判斷是否為空
數(shù)據(jù):

需求:性別為空顯示“暫無數(shù)據(jù)”,不為空原樣輸出
select t.id,
t.name,
t.age,
decode(t.sex,NULL,'暫無數(shù)據(jù)',t.sex) as sex
from STUDENT2 t
結(jié)果:

總結(jié):decode在書寫sql的時(shí)候還是挺有用的,常用的應(yīng)該是1和5了吧(我猜的,因?yàn)槲揖褪墙?jīng)常用這兩種)
到此這篇關(guān)于Oracle進(jìn)階DECODE函數(shù)使用詳解的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
oracle實(shí)現(xiàn)將字段按逗號(hào)拼接/按逗號(hào)分為多行實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于oracle實(shí)現(xiàn)將字段按逗號(hào)拼接/按逗號(hào)分為多行的相關(guān)資料,因?yàn)樽罱?xiàng)目表里的某個(gè)字段存儲(chǔ)的值是以逗號(hào)分隔開來的,所以這里給大家總結(jié)下,需要的朋友可以參考下2023-07-07
實(shí)例分析ORACLE數(shù)據(jù)庫性能優(yōu)化
這篇文章主要介紹了從實(shí)例著手分析ORACLE數(shù)據(jù)庫性能優(yōu)化問題以及解決辦法,需要的朋友參考下吧。2017-12-12
Oracle進(jìn)行數(shù)據(jù)庫升級(jí)和降級(jí)的操作代碼
數(shù)據(jù)庫升級(jí)是一個(gè)復(fù)雜的過程,涉及到備份現(xiàn)有數(shù)據(jù)、安裝新版本的數(shù)據(jù)庫軟件、遷移數(shù)據(jù)和應(yīng)用程序的兼容性測(cè)試等步驟,數(shù)據(jù)庫降級(jí)通常比升級(jí)更具挑戰(zhàn)性,所以本文給大家介紹了Oracle進(jìn)行數(shù)據(jù)庫升級(jí)和降級(jí)的操作,需要的朋友可以參考下2024-09-09
Oracle ORA-22908(NULL表值的參考)異常分析與解決方法
這篇文章主要介紹了Oracle ORA-22908(NULL表值的參考)異常分析與解決方法,大家可以參考使用2013-11-11
Oracle多行數(shù)據(jù)合并為一行數(shù)據(jù)并將列數(shù)據(jù)轉(zhuǎn)為字段名三種方式
怎么合并多行記錄的字符串,一直是oracle新手喜歡問的SQL問題之一,下面這篇文章主要給大家介紹了關(guān)于Oracle多行數(shù)據(jù)合并為一行數(shù)據(jù)并將列數(shù)據(jù)轉(zhuǎn)為字段名的三種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
WMware redhat 5 oracle 11g 安裝方法
本文將詳細(xì)介紹WMware中redhat 5 安裝oracle 11g方法,需要的朋友可以參考下2012-12-12
解析如何查看Oracle數(shù)據(jù)庫中某張表的字段個(gè)數(shù)
本篇文章是對(duì)查看Oracle數(shù)據(jù)庫中某張表的字段個(gè)數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

