IF(expr1,expr2,expr3)
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
->'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
->'no'
如果expr1(expr1 <> 0和expr1 <> NULL)是TRUE,则IF() 返回expr2。否则返回expr3。
IFNULL(expr1,expr2)
mysql> SELECT IFNULL(1,0);
-> 1
mysql> SELECT IFNULL(NULL,10);
-> 10
mysql> SELECT IFNULL(1/0,10);
-> 10
mysql> SELECT IFNULL(1/0,'yes');
->'yes'
如果expr1不是NULL,则IFNULL()返回expr1; 否则返回expr2
NULLIF(expr1,expr2)
如果expr1 = expr2为真则返回NULL,否则返回expr1
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
mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
第一个CASE语法返回第一个value=compare_value比较为true的结果。
第二个语法返回第一个条件为真的结果。
如果没有比较或条件为真,则返回ELSE之后的结果,如果没有ELSE则返回NULL。