目录
[1、CASE 语句用于流程控制中的多分支情况。](#1、CASE 语句用于流程控制中的多分支情况。)
[2、IF() 函数根据测试条件是否为真分别返回指定的值。](#2、IF() 函数根据测试条件是否为真分别返回指定的值。)
[3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。](#3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。)
[4、NULLIF() 函数根据两个参数是否相等决定返回 NULL 还是第一个参数。](#4、NULLIF() 函数根据两个参数是否相等决定返回 NULL 还是第一个参数。)
1、CASE 语句用于流程控制中的多分支情况。
语法:
**CASE value
WHEN compare_value THEN resultWHEN compare_value THEN result ...
ELSE result
END**
或者:
**CASE
WHEN condition THEN resultWHEN condition THEN result ...
ELSE result
END**
返回值:
CASE语句返回condition为真或者value = compare_value为真的THEN子句中指定的值。
sql
SELECT
weekday_index AS `Weekday Index`,
CASE weekday_index
WHEN 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`
FROM
test_case_weekday;
+---------------+--------------+
| Weekday Index | Weekday Name |
+---------------+--------------+
| 0 | Monday |
| 1 | Tuesday |
| 2 | Wednesday |
| 3 | Thursday |
| 4 | Friday |
| 5 | Saturday |
| 6 | Sunday |
+---------------+--------------+
sql
SELECT
weekday_index AS `Weekday Index`,
CASE
WHEN 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`
FROM
test_case_weekday;
2、IF() 函数根据测试条件是否为真分别返回指定的值。
语法:
IF(condition, expr_if_true, expr_if_false)
*
condition:*测试条件表达式。
expr_if_true:如果condition为TRUE返回此值。
expr_if_false:如果condition为FALSE返回此值。
sql
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。
sql
SELECT
IFNULL(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。
sql
SELECT
NULLIF(1, 1),
NULLIF(1, 2);
+--------------+--------------+
| NULLIF(1, 1) | NULLIF(1, 2) |
+--------------+--------------+
| NULL | 1 |
+--------------+--------------+