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 子句為 true,系統就會傳回這個子句。如果 CASE 陳述式沒有 ELSE 子句,且沒有任何 WHEN 子句為 true,則 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