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(אופציונלי) – כל שדה או ביטוי תקינים. הפסקהELSEelse_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