目录
[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 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
子句中指定的值。
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 |
+--------------+--------------+