·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返回值為一個浮點值。
浮點
IFNULL(expr1,expr2):expr1為空則把expr2返回