Oracle中decode函數(shù)用法
1.decode函數(shù)的兩種形式
第一種形式
含義解釋?zhuān)?/p>
decode(條件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
該函數(shù)的含義如下:
IF 條件=值1 THEN RETURN(翻譯值1) ELSIF 條件=值2 THEN RETURN(翻譯值2) ...... ELSIF 條件=值n THEN RETURN(翻譯值n) ELSE RETURN(缺省值) END IF
第二種形式
decode(字段或字段的運(yùn)算,值1,值2,值3)
這個(gè)函數(shù)運(yùn)行的結(jié)果是,當(dāng)字段或字段的運(yùn)算的值等于值1時(shí),該函數(shù)返回值2,否則返回值3
當(dāng)然值1,值2,值3也可以是表達(dá)式,這個(gè)函數(shù)使得某些sql語(yǔ)句簡(jiǎn)單了許多
sign()函數(shù)
解釋?zhuān)?/p>
sign()函數(shù)根據(jù)某個(gè)值是0、正數(shù)還是負(fù)數(shù),分別返回0、1、-1
用法示例:
select id,sign(id-2) from t_decode;
截圖效果:

lpad()函數(shù)
在字段id前邊補(bǔ)字段0 長(zhǎng)度為2
select lpad(id,2,0) from t_decode;

2.decode的一些工作常用思路總結(jié)
a.準(zhǔn)備測(cè)試數(shù)據(jù)
創(chuàng)建測(cè)試表t_decode,并插入測(cè)試數(shù)據(jù)
//創(chuàng)建表,插入數(shù)據(jù),查詢(xún)
create table t_decode(
id integer,
name varchar2(10)
);
//插入數(shù)據(jù)
insert into t_decode values (1,'a');
insert into t_decode values (2,'b');
insert into t_decode values (3,'c');
insert into t_decode values (4,'a');
數(shù)據(jù)樣式

b.第一種形式decode函數(shù)的常用思路
1. 簡(jiǎn)單使用:判斷字符串
select id,name, decode(id,1,'第一個(gè)',2,'第二個(gè)',3,'第三個(gè)','沒(méi)有') new_id from t_decode;

2.使用decode函數(shù)分段
判斷表中id大小并根據(jù)大小劃分不同范圍
(-,2) low
[2,4) mid
[4,-] high
select id,name,
decode(sign(id - 4),1,'high id',0,'high id','-1',
decode(sign(id - 2),1,'mid id',0,'mid id',-1,'low id'))
from t_decode;

c.第二種形式decode函數(shù)的常用思路
1. 比較大小
-- 比較大小 select decode(sign(100-90),-1,100,90) from dual;

2. 使用表達(dá)式來(lái)搜索字符串
判斷name中是否含有a?
select id,name,decode(instr(name,'a'),0,'不含有a','含有a') as info from t_decode;

3. 實(shí)現(xiàn)行列轉(zhuǎn)換
注意:decode相當(dāng)于:case when then else end語(yǔ)句
select sum(decode(name,'a',id,0)) id_1, sum(decode(name,'b',id,0)) id_2, sum(decode(name,'c',id,0)) id_3 from t_decode;

添加測(cè)試:
select
decode(name,'a',id,0) id_1,
decode(name,'b',id,0) id_2,
decode(name,'c',id,0) id_3
from t_decode;
-- 相等于:case when then else end
select
case name when 'a' then id else 0 end as id_1,
case name when 'b' then id else 0 end as id_2,
case name when 'c' then id else 0 end as id_3
from t_decode;

4. 結(jié)合Lpad函數(shù),如何使主鍵的值自動(dòng)加1并在前面補(bǔ)0
結(jié)合Lpad函數(shù),如何使主鍵的值自動(dòng)加1并在前面補(bǔ)0 select lpad(decode(count(id),0,1,max(to_number(id)+1)),14,'0') new_id from t_decode;

拆分詳細(xì)講解:
select * from t_decode

select lpad(id,2,0) from t_decode

select to_number(id) from t_decode;

select max(to_number(id)+1) from t_decode;

select decode(count(id),0,1,max(to_number(id)+1)) from t_decode;

select lpad(decode(count(id),0,1,max(to_number(id)+1)),14,‘0') new_id from t_decode;

以上所述是小編給大家介紹的Oracle中decode函數(shù)用法,希望對(duì)大家有所幫助。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Oracle配置數(shù)據(jù)庫(kù)防火墻的流程步驟
數(shù)據(jù)庫(kù)防火墻用于監(jiān)控和控制對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),防止未經(jīng)授權(quán)的訪問(wèn)、SQL注入攻擊和其他惡意活動(dòng),以下是一個(gè)詳細(xì)的指導(dǎo),展示如何使用開(kāi)源的數(shù)據(jù)庫(kù)防火墻工具,如 GreenSQL,來(lái)保護(hù) MySQL 數(shù)據(jù)庫(kù),需要的朋友可以參考下2024-09-09
Oracle?11g+windows?環(huán)境下Ecology7系統(tǒng)安裝過(guò)程
這篇文章主要介紹了Oracle?11g+windows?環(huán)境下Ecology7系統(tǒng)安裝,安裝步驟是以管理員模式運(yùn)行Oracle setup.exe文件,根據(jù)提示安裝Oracle,創(chuàng)建數(shù)據(jù)庫(kù),注意修改連接數(shù),本文給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10
Oracle性能究極優(yōu)化(Oracle 性能優(yōu)化)
Linux Journal 發(fā)表了一篇優(yōu)化 Oracle 數(shù)據(jù)庫(kù)的文章,感覺(jué)十分的有用。簡(jiǎn)要介紹其摘要和大家共同分享 Linux 在企業(yè)級(jí)數(shù)據(jù)庫(kù)上應(yīng)用2007-03-03
Oracle安裝遇到INS-30131錯(cuò)誤的解決方法
這篇文章主要介紹了Oracle安裝遇到錯(cuò)誤INS-30131的解決方法,感興趣的小伙伴們可以參考一下2016-07-07
Oracle數(shù)據(jù)泵的導(dǎo)入與導(dǎo)出實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)泵的導(dǎo)入與導(dǎo)出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
在Oracle關(guān)閉情況下如何修改spfile的參數(shù)
大家都知道在Oracle中pfile參數(shù)是可以手動(dòng)更改的,但是spfile是二進(jìn)制文件所以不可以手動(dòng)更改,但我最近遇到了一個(gè)問(wèn)題,修改參數(shù)錯(cuò)誤,導(dǎo)致Oracle啟動(dòng)不了,一定要修改spfile該怎么辦呢?下面通過(guò)這篇文章來(lái)一起看看吧。2016-12-12
ORACLE 12C PDB 維護(hù)基礎(chǔ)知識(shí)介紹
CDB和PDB是ORACLE 12C一個(gè)很亮的新特性,由于他們的引入導(dǎo)致傳統(tǒng)的ORACLE數(shù)據(jù)庫(kù)管理理念不少發(fā)生了改變,這里列舉了部分最基本的cdb和pdb管理方式2016-09-09
Oracle基礎(chǔ):通過(guò)sqlplus執(zhí)行sql語(yǔ)句后的結(jié)果進(jìn)行判斷
今天小編就為大家分享一篇關(guān)于Oracle基礎(chǔ):通過(guò)sqlplus執(zhí)行sql語(yǔ)句后的結(jié)果進(jìn)行判斷,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Oracle數(shù)據(jù)庫(kù)更新大批量數(shù)據(jù)案例
今天小編就為大家分享一篇關(guān)于Oracle數(shù)據(jù)庫(kù)更新大批量數(shù)據(jù)案例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10

