一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - Oracle中decode函數用法

Oracle中decode函數用法

2022-01-17 18:11qichangjian Oracle

本文詳細講解了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函數用法,希望對大家有所幫助。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://blog.csdn.net/qichangjian/article/details/88975499

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美久久天天综合香蕉伊 | chinese一bdsmⅹxx| 99久久精品99999久久 | 99在线观看国产 | 日韩成人精品 | 日韩一区二区三区四区不卡 | 色综久久天天综合绕视看 | 2019国内自拍大神视频 | 欧美日韩精品乱国产538 | 亚洲天堂网2018 | 欧美精品成人a多人在线观看 | 国产色站 | 日韩欧美国内 | 91免费破解版 | 国产主播福利在线观看 | 高中生喷水喷浆 | 日本在线观看视频 | 亚洲精品国精品久久99热 | 国产福利在线免费观看 | 亚洲高清中文字幕 | 日本一区二区视频在线观看 | 情趣内衣在线观看 | 免费观看欧美成人h | 免费一级生活片 | 边摸边吃奶边做爽视频免费 | 精品国产区一区二区三区在线观看 | 久久综合狠狠综合狠狠 | 波多野结衣在线观看视频 | 私人影院免费观看 | chinese高中生gay男同 | 欧美日韩中文字幕久久伊人 | 男人叼女人的痛爽视频免费 | 美女张开腿让我了一夜 | 国产suv精品一区二区四区三区 | 欧美在线观看视频一区 | 青青草视频破解版 | 涩涩国产精品福利在线观看 | 荷兰精品女人性hd | 国产精品久久香蕉免费播放 | 嫩草影院永久一二三入口 | 欧美特级午夜一区二区三区 |