中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle中decode函數用法是怎樣的

發布時間:2021-12-17 16:03:50 來源:億速云 閱讀:3698 作者:柒染 欄目:開發技術

這期內容當中小編將會給大家帶來有關Oracle中decode函數用法是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1.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(缺省值)
END IF

第二種形式

decode(字段或字段的運算,值1,值2,值3)

這個函數運行的結果是,當字段或字段的運算的值等于值1時,該函數返回值2,否則返回值3

當然值1,值2,值3也可以是表達式,這個函數使得某些sql語句簡單了許多

sign()函數

解釋:

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

用法示例:

select id,sign(id-2) from t_decode;

截圖效果:

Oracle中decode函數用法是怎樣的

lpad()函數

在字段id前邊補字段0 長度為2

select lpad(id,2,0) from t_decode;

Oracle中decode函數用法是怎樣的

2.decode的一些工作常用思路總結

a.準備測試數據

創建測試表t_decode,并插入測試數據

//創建表,插入數據,查詢
create table t_decode(
       id integer,
       name varchar2(10)
);

//插入數據
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');

數據樣式

Oracle中decode函數用法是怎樣的

b.第一種形式decode函數的常用思路

1. 簡單使用:判斷字符串
select id,name,
	decode(id,1,'第一個',2,'第二個',3,'第三個','沒有') new_id 
from t_decode;

Oracle中decode函數用法是怎樣的

2.使用decode函數分段

判斷表中id大小并根據大小劃分不同范圍

(-,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;

Oracle中decode函數用法是怎樣的

c.第二種形式decode函數的常用思路

1. 比較大小
-- 比較大小
select decode(sign(100-90),-1,100,90) from dual;

Oracle中decode函數用法是怎樣的

2. 使用表達式來搜索字符串

判斷name中是否含有a?

select id,name,decode(instr(name,'a'),0,'不含有a','含有a') as info from t_decode;

Oracle中decode函數用法是怎樣的

3. 實現行列轉換

注意:decode相當于:case when then else end語句

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;

Oracle中decode函數用法是怎樣的

添加測試:

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;

Oracle中decode函數用法是怎樣的

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

Oracle中decode函數用法是怎樣的

拆分詳細講解:

select * from t_decode

Oracle中decode函數用法是怎樣的

select lpad(id,2,0) from t_decode

Oracle中decode函數用法是怎樣的

select to_number(id) from t_decode;

Oracle中decode函數用法是怎樣的

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

Oracle中decode函數用法是怎樣的

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

Oracle中decode函數用法是怎樣的

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

Oracle中decode函數用法是怎樣的

上述就是小編為大家分享的Oracle中decode函數用法是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

赤峰市| 卢龙县| 吉林市| 永寿县| 日照市| 米泉市| 宜兰市| 黑山县| 内黄县| 抚松县| 吉林省| 五家渠市| 八宿县| 高州市| 锦州市| 新龙县| 阜南县| 昌平区| 延津县| 桓仁| 西华县| 安宁市| 普陀区| 望城县| 同仁县| 关岭| 鄂尔多斯市| 嘉义市| 阿荣旗| 山西省| 江阴市| 保定市| 垣曲县| 泾川县| 临湘市| 荥阳市| 霸州市| 武威市| 衡山县| 新昌县| 沙湾县|