目录
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 |
+--------------+--------------+