IF(expr1,expr2,expr3)
若是 expr1 是TRUE (expr1 <> 0 and 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表達式的結果類型。
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() (這一點在其被儲存到臨時表時很重要 ) 的默認返回值類型按照如下方式計算:
表達式
返回值
expr2 或expr3 返回值爲一個字符串。
字符串
expr2 或expr3 返回值爲一個浮點值。
浮點
expr2 或 expr3 返回值爲一個整數。
整數
假如expr2 和expr3 都是字符串,且其中任何一個字符串區分大小寫,則返回結果是區分大小寫。mysql