ORACLE Oracle提高篇之DECODE

2021-08-28 07:37:18 字數 2459 閱讀 2157

decode含義

decode(條件,值1,返回值1,值2,返回值2,…值n,返回值n,預設值)

這個是decode的表示式,具體的含**釋為:

if 條件=值1

then

return

(翻譯值1

)elsif 條件=值2

then

return

(翻譯值2).

....

.elsif 條件=值n then

return

(翻譯值n)

else

return

(預設值)

endif

decode的用法

這裡主要說的就是decode的用法,在很多時候這個函式還是很有用的。

1.翻譯值

資料截圖:

需求:查詢出的資料,1表示男生,2表示女生

select t.id,

t.name,

t.age,

decode(t.***,

'1',

'男生'

,'2'

,'女生'

,'其他'

)as ***

from student2 t

結果:

2.decode比較大小

說明:sign(value)函式會根據value的值為0,正數,負數,分別返回0,1,-1

資料:

需求:年齡在20以上的顯示20以上,20以下的顯示20以下,20的顯示正好20

select t.id,

t.name,

t.age,

decode(sign(t.age -20)

,1,'20以上',-

1,'20以下',0

,'正好20'

,'未知'

)as ***

from student2 t

結果:

3.decode分段

資料暫無

需求:工資大於5000為高薪,工資介於3000到5000為中等,工資小於3000為底薪

select name,

sal,

decode(sign(sal -

5000),

1,'高薪',0

,'高薪',-

1,decode(sign(sal -

3000),

1,'中等',0

,'中等',-

1,'低薪'))

as salname

from person;

結果暫無

4.搜尋字串

資料:

需求:找到含有三的姓名

select t.id,

decode(instr(t.name,

'三'),0

,'姓名不含有三'

,'姓名含有三'

)as name,

t.age,

t.***

from student2 t

結果:

5.判斷是否為空

資料:

需求:性別為空顯示「暫無資料」,不為空原樣輸出

select t.id,

t.name,

t.age,

decode(t.***,

null

,'暫無資料'

,t.***)

as ***

from student2 t

結果:

總結:decode在書寫sql的時候還是挺有用的,常用的應該是1和5了吧(我猜的,因為我就是經常用這兩種)

Oracle Oracle常用指令

隨手記錄下有時會用到,但不是很頻繁,每次都要搜尋的那些命令 1.斷開使用者連線 刪除使用者的時候提示有在連線程序可用 1.查到使用者程序 select sid,serial from v session where username username 2.殺掉程序 alter system kill...

Oracle Oracle程序簡介

為什麼要有後台程序 為什麼要每個例項要有個記憶體結構?就是為了提高資料讀寫效率而設定的乙個大型的記憶體區域,否則豈不是要實時與磁碟互動?為什麼要有後台程序 資料最終還是要存到磁碟上,所以需要有不同的程序將不同記憶體片段按某個條件批量寫進磁碟 如資料寫程序 ora dbw0 日誌寫程序 ora lgw...

ORACLE ORACLE時區總結

設定會話時區 alter session set time zone 10 00 設定會話時間格式 alter session set nls date format yyyy mm dd hh24 mi ss select dbtimezone,sessiontimezone,current da...