標準 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 子句傳回 else_result,就會傳回 NULL (如果有的話);如果沒有,則傳回 NULL,且 exprvalue 運算式必須自動強制轉換為共通的超級類型;這個運算式會比較強制轉換後的值,確認彼此是否相等。resultelse_result 運算式必須可強制轉換為共通的超級類型。

CASE
  WHEN cond1 THEN result
  [WHEN cond2...]
  [ELSE else_result]
  END
cond:BOOL resultelse_result:輸入類型的超級類型。 評估每個連續 WHEN 子句的條件 cond 並傳回條件為 true 的第一個結果;不會評估任何剩餘的 WHEN 子句與 else_result。如果所有條件都是 false 或 NULL,就會傳回 else_result (如果有的話);如果沒有,則傳回 NULLresultelse_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_resulttrue_resultelse_result 必須可強制轉換為共通的超級類型。
IFNULL(expr, null_result) 不限類型 不限類型或輸入類型的超級類型。 如果 exprNULL,就會傳回 null_result。否則,會傳回 expr。如果 expr 不是 NULL,就不會評估 null_resultexprnull_result 必須自動強制轉換為共通的超級類型。COALESCE(expr, null_result) 的同義詞。
NULLIF(expression, expression_to_match) 任何類型 T 或 T 的子類型 任何類型 T 或 T 的子類型 如果 expression = expression_to_match 是 true,就傳回 NULL,否則傳回 expressionexpressionexpression_to_match 必須自動強制轉換為共通的超級類型;這個運算式會比較強制轉換後的值,確認彼此是否相等。
本頁內容對您是否有任何幫助?請提供意見:

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

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