条件函数
CASE a WHEN b THEN c [WHEN d THEN e]… [ELSE f] END
功能:将表达式和多个可能的值进行比较,当匹配时返回相应的结果
返回类型:匹配后返回结果的类型
举例:
- mysql> select case tiny_column when 1 then "tiny_column=1" when 2 then "tiny_column=2" end from small_table limit 2;
- +-------------------------------------------------------------------------------+
- | CASE`tiny_column` WHEN 1 THEN 'tiny_column=1' WHEN 2 THEN 'tiny_column=2' END |
- +-------------------------------------------------------------------------------+
- | tiny_column=1 |
- | tiny_column=2 |
- +-------------------------------------------------------------------------------+
- 2 rows in set (0.02 sec)
if(boolean condition, type ifTrue, type ifFalseOrNull)
功能:测试一个表达式,根据结果是true还是false返回相应的结果
返回类型:ifTrue表达式结果的类型
举例
- mysql> select if(tiny_column = 1, "true", "false") from small_table limit 1;
- +----------------------------------------+
- | if(`tiny_column` = 1, 'true', 'false') |
- +----------------------------------------+
- | true |
- +----------------------------------------+
- 1 row in set (0.03 sec)
ifnull(type a, type isNull)
功能:测试一个表达式,如果表达式是NULL,则返回第二个参数,否则返回第一个参数。
返回类型:第一个参数的类型
举例
- mysql> select ifnull(1,0);
- +--------------+
- | ifnull(1, 0) |
- +--------------+
- | 1 |
- +--------------+
- 1 row in set (0.01 sec)
- mysql> select ifnull(null,10);
- +------------------+
- | ifnull(NULL, 10) |
- +------------------+
- | 10 |
- +------------------+
- 1 row in set (0.01 sec)
nullif(expr1,expr2)
功能:如果两个参数相等,则返回NULL。否则返回第一个参数的值。它和以下的CASE WHEN效果一样。
- CASE
- WHEN expr1 = expr2 THEN NULL
- ELSE expr1
- END
返回类型:expr1的类型或者NULL
举例
- mysql> select nullif(1,1);
- +--------------+
- | nullif(1, 1) |
- +--------------+
- | NULL |
- +--------------+
- 1 row in set (0.00 sec)
- mysql> select nullif(1,0);
- +--------------+
- | nullif(1, 0) |
- +--------------+
- | 1 |
- +--------------+
- 1 row in set (0.01 sec)