第一種形式
含**釋:
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()函式解釋:1、準備測試資料:建立測試表t_decode,並插入測試資料//建立表,插入資料,查詢sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1
用法示例:
截圖效果:select id,sign(id-2) from t_decode;
lpad()函式
在字段id前邊補欄位0 長度為2
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');
資料樣式
2、第一種形式decode函式的常用思路
①. 簡單使用:判斷字串
select id,name,
decode(id,1,'第乙個',2,'第二個',3,'第三個','沒有') new_id
②.使用decode函式分段判斷表中id大小並根據大小劃分不同範圍
3、第二種形式decode函式的常用思路①. 比較大小
-- 比較大小
select decode(sign(100-90),-1,100,90) from dual;
②. 使用表示式來搜尋字串判斷name中是否含有a?
select id,name,decode(instr(name,'a'),0,'不含有a','含有a') as info from t_decode;
③. 實現行列轉換注意: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;
新增測試:
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
④. 結合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;
拆分詳細講解:select * from t_decode
Oracle 中 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 預設值...
Oracle 中 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 預設值...
Oracle 中 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 預設值...