溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何正確使用case when表達(dá)式 和 decode函數(shù)?

發(fā)布時(shí)間:2020-07-19 07:15:39 來源:網(wǎng)絡(luò) 閱讀:877 作者:小陳子057 欄目:關(guān)系型數(shù)據(jù)庫
    相信很多小伙伴在開發(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á)式 和 decode函數(shù)?

    用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ù)!
向AI問一下細(xì)節(jié)

免責(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)容。

AI