CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN condition] THEN result ...] [ELSE result] END
הגרסה הראשונה מחזירה את ה-result כאשר value=compare-value. הגרסה השניה מחזירה את התוצאה לתנאי הראשון, כאשר הוא "אמת". אם אין תוצאה מתאימה, אז התוצאה לאחר ה-else מוחזרת. אם אין את החלק של else, מוחזר NULL.
mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END; -> "one" mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; -> "true" mysql> SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END; -> NULL |
הטיפוס של הערך המוחזר הוא מאותו סוג של הערך המוחזר הראשון (לאחר ה-THEN הראשון).
(IF(expr1,expr2,expr3
אם expr1 הוא "אמת" (expr1 <> 0 and expr1 <> NULL), אז ()IF מחזיר את expr2, אחרת את expr3. הפונקציה ()IF מחזירה ערך מספרי או מחרוזת, תלוי בהקשר שמשתמשים בה.
mysql> SELECT IF(1>2,2,3); -> 3 mysql> SELECT IF(1<2,'yes','no'); -> 'yes' mysql> SELECT IF(STRCMP('test','test1'),'no','yes'); -> 'no' |
(IFNULL(expr1,expr2
אם expr1 הוא לא NULL, הפונקציה מחזירה את expr1, אחרת את expr2. IFNULL( ) מחזירה ערך מספרי או מחרוזת, תלוי בהקשר שמשתמשים בה.
mysql> SELECT IFNULL(1,0); -> 1 mysql> SELECT IFNULL(NULL,10); -> 10 mysql> SELECT IFNULL(1/0,10); -> 10 mysql> SELECT IFNULL(1/0,'yes'); -> 'yes' |
(NULLIF(expr1,expr2
אם expr1=expr2 הוא "אמת", מוחזר NULL, אחרת מוחזר expr1.
mysql> SELECT NULLIF(1,1); -> NULL mysql> SELECT NULLIF(1,2); -> 1 |