ifnull

IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境

  1. mysql> select IFNULL(1,0);
  2. -> 1
  3. mysql> select IFNULL(0,10);
  4. -> 0
  5. mysql> select IFNULL(1/0,10);
  6. -> 10
  7. mysql> select IFNULL(1/0,yes);
  8. -> yes

if

IF(expr1,expr2,expr3)
<>不等于
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。 相当于三元运算符

  1. mysql> select IF(1>2,2,3);
  2. -> 3
  3. mysql> select IF(1<2,yes,no);
  4. -> yes
  5. mysql> select IF(strcmp(test,test1),yes,no);
  6. -> no

isnull

ISNULL(expr) 的用法
如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。

  1. mysql> select isnull(1+1);
  2. -> 0
  3. mysql> select isnull(1/0);
  4. -> 1
  1. 使用= null 值对比通常是错误的。

nullif

NULLIF(expr1,expr2)用法
如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。

  1. mysql> SELECT NULLIF(1,1);
  2. -> NULL
  3. mysql> SELECT NULLIF(1,2);
  4. -> 1

如果参数不相等,则 MySQL 两次求得的值为 expr1