oracle:case 語句使用


case 語句帶有選擇效果知返回第一個條件滿足要求的語句,即語句一語句二都的判斷都為 true ,返回排在前面的。

case 的語法根據放置的位置不同而不同。

 

一.case 語句

CASE SELECTOR
    WHEN EXPRESSION_1 THEN STATEMENT_1;
    [WHEN EXPRESSION_2 THEN STATEMENT_2;]
    [...]
    [ELSE STATEMENT_N+1 ;]
END CASE;

 

這個是一般語句,注意 在then  后面需要 ; 分號,而且結束的時候  是 END CASE ;

CASE v_element
    WHEN  xx  THEN yy;
    WHEN  xxx THEN  yyy;
    ELSE  yyyy;
END CASE;

當v_element 等於 xx 時,執行 yy 語句,如果很長可以 前后加 begin 和 end,判斷的條件是  v_element =xx ,xx是 具體值。

 

二.搜索式 case 語句

CASE 
    WHEN SEARCH_CONDITION_1 THEN STATEMENT_1;
    [WHEN SEARCH_CONDITION_1 THEN STATEMENT_2;]
    [...]
    [ELSE STATEMENT_N+1 ;]
END CASE;

 

CASE 
    WHEN  v_element=xx  THEN yy;
    WHEN  v_element=xxx THEN  yyy;
    ELSE  yyyy;
END CASE;

 

按順序執行  選擇條件 ,可以是 < > = 等,然后執行后面的語句,遇到一個為true 時將停止。

 

三.case表達式

前兩個可以歸一類,起碼寫法上類似,用case 語句做表達式,意思是可以這么寫:

v_element:= CASE xx 
                            WHEN  x THEN y
                            ELSE yy
                     END;

or

select  CASE xx
                    WHEN x THEN y
                    ELSE YY
           END
           ....

 

就是把case 放在一條語句里面, 刪除 END CASE 中的CASE 和 最后的 ; 分號,中間語句的分號也要刪掉。

可以把 case 至  end  看成一個值,最后面的分號是語句的要求,類似  a:= v ;  這樣的寫法。

 

四.NULLIF

這個是case 的變種函數,結構 :

NULLIF(xx,yy );

如果 xx = yy ,則返回 NULL, 如果不等啫返回 xx。

注意,在這函數中xx 參數不能為 NULL,即

NULLIF(NULL,0);

 

是錯的。

 

五.COALESCE

把表達式中的每個表達式與NULL比較,返回第一個非NULL 的表達式的值。結構如下:

COALSECE (x1,x2,...,xn);

 

寫法上可以將最后的寫為0 ,這么就類似於CASE 中的else 選項。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM