標準 SQL 中的條件運算式

條件運算式會對其輸入內容的評估順序加上限制。基本上,它們會從左向右進行短路評估,並只評估選擇的輸出值。相對的,對於正常函式的所有輸入都會在呼叫函式之前評估。條件運算式中的短路邏輯 (Short-circuiting) 可以用來處理錯誤或進行效能方面的調整。

語法 輸入資料類型 結果資料類型 說明

CASE expr
  WHEN value THEN result
  [WHEN ...]
  [ELSE else_result]
  END
exprvalue:不限類型。 resultelse_result:輸入類型的超級類型。 比較 expr 與每個連續 WHEN 子句的值,並在比較為 true 時傳回第一個結果。不會評估剩餘的 WHEN 子句與 else_result。如果 expr = value 比較作業傳回 false,或針對所有 WHEN 子句傳回 NULL,就會傳回 else_result (如果有的話);如果沒有,則傳回 NULL。系統會強制將 exprvalue 運算式隱含轉換成共通的超級類型,還會為強制轉換後的值進行相等比較。系統會強制將 resultelse_result 運算式轉換成共通的超級類型。

CASE
  WHEN cond1 THEN result
  [WHEN cond2...]
  [ELSE else_result]
  END
cond: BOOL resultelse_result:輸入類型的超級類型。 評估每個連續 WHEN 子句的條件 cond,並傳回條件為 true 的第一個結果;不會評估任何剩餘的 子句與 else_result。如果所有條件都是 false 或 NULL,就會傳回 else_result (如果有的話);如果沒有,則傳回 NULL。系統會強制將 resultelse_result 運算式隱含轉換成共通的超級類型。
COALESCE(expr1, ..., exprN) 不限類型 輸入類型的超級類型 傳回第一個非空值運算式的值。不會評估剩餘運算式。系統會強制將所有輸入運算式隱含轉換成共通的超級類型。
IF(cond, true_result, else_result) cond: BOOL true_resultelse_result:不限類型 如果 cond 是 true,就會傳回 true_result,否則會傳回 else_result。如果 cond 是 true,就不會評估 else_result。如果 cond 是 false 或 NULL,就不會評估 true_result。系統會強制將 true_resultelse_result 轉換成共通的超級類型。
IFNULL(expr, null_result) 不限類型 不限類型或輸入類型的超級類型。 如果 exprNULL,就會傳回 null_result。否則,會傳回 expr。如果 expr 不是 NULL,就不會評估 null_result。系統會強制將 exprnull_result 隱含轉換成共通的超級類型。COALESCE(expr, null_result) 的同義詞。
NULLIF(expression, expression_to_match) 任何類型 T 或 T 的子類型 任何類型 T 或 T 的子類型 如果 expression = expression_to_match 是 true,就會傳回 NULL,否則會傳回 expression。系統會強制將 expressionexpression_to_match 隱含轉換成共通的超級類型,還會為強制轉換後的值進行相等比較。
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
需要協助嗎?請前往我們的支援網頁