条件函数

CASE a WHEN b THEN c [WHEN d THEN e]…​ [ELSE f] END

功能:将表达式和多个可能的值进行比较,当匹配时返回相应的结果

返回类型:匹配后返回结果的类型

举例:

  1. mysql> select case tiny_column when 1 then "tiny_column=1" when 2 then "tiny_column=2" end from small_table limit 2;
  2. +-------------------------------------------------------------------------------+
  3. | CASE`tiny_column` WHEN 1 THEN 'tiny_column=1' WHEN 2 THEN 'tiny_column=2' END |
  4. +-------------------------------------------------------------------------------+
  5. | tiny_column=1 |
  6. | tiny_column=2 |
  7. +-------------------------------------------------------------------------------+
  8. 2 rows in set (0.02 sec)

if(boolean condition, type ifTrue, type ifFalseOrNull)

功能:测试一个表达式,根据结果是true还是false返回相应的结果

返回类型:ifTrue表达式结果的类型

举例

  1. mysql> select if(tiny_column = 1, "true", "false") from small_table limit 1;
  2. +----------------------------------------+
  3. | if(`tiny_column` = 1, 'true', 'false') |
  4. +----------------------------------------+
  5. | true |
  6. +----------------------------------------+
  7. 1 row in set (0.03 sec)

ifnull(type a, type isNull)

功能:测试一个表达式,如果表达式是NULL,则返回第二个参数,否则返回第一个参数。

返回类型:第一个参数的类型

举例

  1. mysql> select ifnull(1,0);
  2. +--------------+
  3. | ifnull(1, 0) |
  4. +--------------+
  5. | 1 |
  6. +--------------+
  7. 1 row in set (0.01 sec)
  1. mysql> select ifnull(null,10);
  2. +------------------+
  3. | ifnull(NULL, 10) |
  4. +------------------+
  5. | 10 |
  6. +------------------+
  7. 1 row in set (0.01 sec)

nullif(expr1,expr2)

功能:如果两个参数相等,则返回NULL。否则返回第一个参数的值。它和以下的CASE WHEN效果一样。

  1. CASE
  2. WHEN expr1 = expr2 THEN NULL
  3. ELSE expr1
  4. END

返回类型:expr1的类型或者NULL

举例

  1. mysql> select nullif(1,1);
  2. +--------------+
  3. | nullif(1, 1) |
  4. +--------------+
  5. | NULL |
  6. +--------------+
  7. 1 row in set (0.00 sec)
  1. mysql> select nullif(1,0);
  2. +--------------+
  3. | nullif(1, 0) |
  4. +--------------+
  5. | 1 |
  6. +--------------+
  7. 1 row in set (0.01 sec)