IF(expr1,expr2,expr3)
如果 expr1 為真(expr1 <> 0 以及 expr1 <> NULL),那麽 IF() 返回 expr2,否則返回 expr3。IF() 返回壹個數字或字符串,這取決於它被使用的語境:
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'
如果 expr2 或 expr3 明確地為 NULL,那麽函數 IF() 的返回值類型為非 NULL 列的類型。(這在選擇在 MySQL 4.0.3 中新加入)。 expr1 是作為壹個整數值被計算的,這就意味著,如果測試的是壹個浮點型或字符串值,就必須進行比較操作:
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
在上面第壹種情況下,IF(0.1) 返回 0,是因為 0.1 被轉換為壹個整數值,返回 IF(0) 的測試結果。這可能不是妳所期望的。在第二種情況下,比較測試原浮點數是否為壹個非零值。比較的結果被作為整數使用。 缺省的 IF() 返回值類型 (當結果存儲在臨時表中時,這是非常重要的) 在 MySQL 3.23 中按下列方式確定: 表達式 返回值
表達式(expr2)或表達式(expr3)返回值為字符串 字符串
表達式(expr2)或表達式(expr3)返回值為浮點型值 浮點型
表達式(expr2)或表達式(expr3)返回值為整型 整型
如果表達式(expr2)和表達式(expr3)均是字符串,同時兩個字符串均是忽略字母大小寫的,那麽返回值也是忽略字母大小寫的(從 MySQL 3.23.51 開始)。