您好,登錄后才能下訂單哦!
相信很多小伙伴在開發(fā)過程中都有用到case when表達(dá)式和decode函數(shù),那么會(huì)不會(huì)有小伙伴和我一樣剛開始有很多疑慮,什么情況下用case when,什么情況下用decode呢?兩者有什么區(qū)別呢?今天小編就帶大家細(xì)分一下兩者的區(qū)別:
case when表達(dá)式不僅可以等值連接還可以范圍判斷;decode函數(shù)可以等值連接。
這樣說大家可能不能理解,舉個(gè)例子吧,如下;
創(chuàng)建一張表tmp1,列為dept表示部門信息,分別有10,20,30,40,50部門:
用case when表達(dá)式判斷,如果部門信息為10,則判斷為A,部門信息為20,則判斷為B,其他部門信息判斷為C:
select case when dept = 10 then 'A'
when dept = 20 then 'B'
else 'C'
from tmp1;
或者:
select case dept when 10 then 'A'
when 20 then 'B'
else 'C'
from tmp1;
用decode函數(shù)判斷,如果部門信息為10,則判斷為A,部門信息為20,則判斷為B,其他部門信息判斷為C:
select decode(dept,10,'A',20,'B','C') from tmp1;
而如果想判斷部門信息為10或20時(shí),判斷為'A',部門信息為30或40時(shí),判斷為'B',其他則判斷為'C'。這時(shí)只能用case when表達(dá)式:
select case when dept between 10 and 20 then 'A'
when dept between 30 and 40 then 'B'
else 'C'
end
from tmp1;
注:這時(shí)sql不能再寫為
select case dept when between 10 and 20 then 'A'
when between 30 and 40 then 'B'
else 'C'
end
from tmp1;
這時(shí)會(huì)報(bào)錯(cuò): ORA-00936:缺失表達(dá)式
本篇文章已經(jīng)結(jié)束了,你學(xué)會(huì)了嗎?如若還有疑問,可留言給小編,看到必回復(fù)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。