内置函数--条件判断

2020-12-31
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。

{/if}