目录
1、CASE 语句用于流程控制中的多分支情况。
2、IF() 函数根据测试条件是否为真分别返回指定的值。
3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。
4、NULLIF() 函数根据两个参数是否相等决定返回 NULL 还是第一个参数。
1、CASE 语句用于流程控制中的多分支情况。
 
语法:
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返回值:
CASE语句返回condition为真或者value = compare_value为真的THEN子句中指定的值。
SELECTweekday_index AS `Weekday Index`,CASE weekday_indexWHEN 0 THEN 'Monday'WHEN 1 THEN 'Tuesday'WHEN 2 THEN 'Wednesday'WHEN 3 THEN 'Thursday'WHEN 4 THEN 'Friday'WHEN 5 THEN 'Saturday'WHEN 6 THEN 'Sunday'ELSE 'Error'END AS `Weekday Name`
FROMtest_case_weekday;+---------------+--------------+
| Weekday Index | Weekday Name |
+---------------+--------------+
|             0 | Monday       |
|             1 | Tuesday      |
|             2 | Wednesday    |
|             3 | Thursday     |
|             4 | Friday       |
|             5 | Saturday     |
|             6 | Sunday       |
+---------------+--------------+SELECTweekday_index AS `Weekday Index`,CASEWHEN weekday_index = 0 THEN 'Monday'WHEN weekday_index = 1 THEN 'Tuesday'WHEN weekday_index = 2 THEN 'Wednesday'WHEN weekday_index = 3 THEN 'Thursday'WHEN weekday_index = 4 THEN 'Friday'WHEN weekday_index = 5 THEN 'Saturday'WHEN weekday_index = 6 THEN 'Sunday'ELSE 'Error'END AS `Weekday Name`
FROMtest_case_weekday;
2、IF() 函数根据测试条件是否为真分别返回指定的值。
 
语法:
IF(condition, expr_if_true, expr_if_false)
condition:测试条件表达式。
expr_if_true:如果condition为TRUE返回此值。
expr_if_false:如果condition为FALSE返回此值。
SELECT IF(1 > 2, 'NO', 'YES'), IF(2 > 1, 'NO', 'YES');+------------------------+------------------------+
| IF(1 > 2, 'NO', 'YES') | IF(2 > 1, 'NO', 'YES') |
+------------------------+------------------------+
| YES                    | NO                     |
+------------------------+------------------------+3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。
 
语法:
IFNULL(expr1, expr2)
expr1:判断此表达式是否为NULL。
expr2:当expr1为NULL时,返回expr2。如果
expr1为NULL,IFNULL()函数返回expr1,否则返回expr2。
SELECTIFNULL(NULL, 'It is NULL'),IFNULL('I am not NULL', 'I am NULL');+----------------------------+--------------------------------------+
| IFNULL(NULL, 'It is NULL') | IFNULL('I am not NULL', 'I am NULL') |
+----------------------------+--------------------------------------+
| It is NULL                 | I am not NULL                        |
+----------------------------+--------------------------------------+4、NULLIF() 函数根据两个参数是否相等决定返回 NULL 还是第一个参数。
 
NULLIF(expr1, expr2)
expr1:一个值或者表达式。
expr2:另一个值或者表达式。如果
expr1 = expr2,NULLIF()函数返回NULL,否则返回expr1。
SELECTNULLIF(1, 1),NULLIF(1, 2);+--------------+--------------+
| NULLIF(1, 1) | NULLIF(1, 2) |
+--------------+--------------+
|         NULL |            1 |
+--------------+--------------+