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 選項。
