CASE (simple)

簡易 CASE 會根據單一輸入運算式的值傳回結果,如果比較值皆不相符,則會傳回預設結果。

另請參閱:IF

用法示範

將付款代碼替換成直覺易懂的名稱:

    CASE Payment Type
        WHEN "CC" THEN "Credit Card"
        WHEN "DC" THEN "Debit Card"
        WHEN "GC" THEN "Gift Card"
        WHEN "CA" THEN "Cash"
        ELSE "Other"
    END

語法

    CASE input_expression
        WHEN expression_to_match THEN result
        [WHEN expression_to_match THEN result]
        [...]
        [ELSE else_result]
    END

參數

  • input_expression - 任何有效的欄位或運算式。
  • [expression_to_match - 任何有效的欄位或運算式。WHEN 子句會比較 input_expressioninput_expression,如果兩者相等,就會傳回 true,如果不相等,則傳回 false。]{#when-conditions}
  • result - 任何有效的欄位或運算式。每個 WHEN 子句都必須有對應的 THEN 子句,用於指定在該條件為 true 時要傳回的結果。如果有多個 WHEN 子句,CASE 陳述式會傳回第一個為 true 的子句結果。
  • else_result (選用) - 任何有效的欄位或運算式。ELSE else_result 子句會為 CASE 陳述式指定預設結果。如果所有 WHEN 子句均為假,系統就會傳回這個子句。如果 CASE 陳述式沒有 ELSE 子句,且所有 WHEN 子句均為假,CASE 陳述式會傳回 NULL

簡易 CASE 的運作方式

簡單的 CASE 陳述式包含下列元素:

  • CASE 關鍵字,後接輸入運算式。
  • WHEN:用於比較 input_expression 的值:如果值等於 input_expression,則這個子句為 true。單一 CASE 陳述式中可以包含多個 WHEN 子句。
  • THEN:如果 WHEN 子句的條件為 true,則會傳回的結果。CASE 陳述式中每個 WHEN 子句都必須有一個 THEN 子句。
  • ELSE:選用。如果沒有任何 WHEN 子句條件成立,CASE 會傳回 ELSE 子句中的值,如果未指定 ELSE 子句,則會傳回 NULL
  • END 關鍵字。

CASE 會評估每個連續 WHEN 子句,並傳回條件為 true 的第一個結果。不會評估任何剩餘的 WHEN 子句和 ELSE 結果。如果所有 WHEN 條件都是 false 或 NULLCASE 會傳回 ELSE 結果;如果沒有 ELSE 子句,則會傳回 NULL

範例

為高級客戶提供自訂連結:

    CASE Premium Status
        WHEN "Platinum" THEN CONCAT(Site URL, "platinum_welcome.html")
        WHEN "Gold" THEN CONCAT(Site URL, "gold_welcome.html")
        WHEN "Silver" THEN CONCAT(Site URL, "silver_welcome.html")
        ELSE CONCAT(Site URL, "welcome.html")
    END