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_expression לבין input_expression ומחזירה את הערך true אם הם שווים, או את הערך false אם הם לא שווים.]{#when-conditions}
  • result – כל שדה או ביטוי תקינים. לכל פסקה של WHEN צריכה להיות פסקה תואמת של THEN שמציינת את התוצאות שיוחזרו אם התנאי הזה מתקיים. אם יש כמה פסוקיות WHEN, הפקודה CASE מחזירה את התוצאה של הפסוקית הראשונה שערכה הוא true.
  • else_result (אופציונלי) – כל שדה או ביטוי תקינים. הפסקה ELSE else_result מציינת תוצאת ברירת מחדל עבור ההצהרה CASE. הסעיף הזה מוחזר אם אף אחד מהסעיפים WHEN לא נכון. אם הצהרת CASE לא כוללת סעיף ELSE, ואף אחד מהסעיפים WHEN לא נכון, ההצהרה CASE מחזירה NULL.

איך פועל CASE פשוט

משפט CASE פשוט מורכב מהרכיבים הבאים:

  • מילת המפתח CASE ואחריה ביטוי קלט.
  • WHEN : הערך שאליו משווים את input_expression : אם הערך שווה לערך input_expression, הפסוקית הזו מתקיימת. אפשר לכלול כמה סעיפי WHEN בהצהרת CASE אחת.
  • THEN : התוצאה שמוחזרת אם התנאי של סעיף WHEN הוא true. צריך להוסיף פסוקית THEN אחת לכל פסוקית WHEN בהצהרת CASE.
  • ELSE : אופציונלי. אם אף אחד מהתנאים של סעיף WHEN לא מתקיים, הפונקציה CASE מחזירה את הערך בסעיף ELSE, או את הערך NULL אם לא מצוין סעיף ELSE.
  • מילת המפתח END.

הפונקציה CASE בודקת כל סעיף WHEN ברצף ומחזירה את התוצאה הראשונה שבה התנאי מתקיים. לא מתבצעת הערכה של סעיפי WHEN שנותרו ושל תוצאת ELSE. אם כל התנאים WHEN הם FALSE או NULL, הפונקציה CASE מחזירה את התוצאה 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