人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

Oracle中decode函數(shù)用法

發(fā)布日期:2022-01-31 17:06 | 文章來(lái)源:腳本之家

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)站的支持!

香港服務(wù)器租用

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶(hù)服務(wù)

7x24全年不間斷在線

專(zhuān)屬顧問(wèn)服務(wù)

1對(duì)1客戶(hù)咨詢(xún)顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部