mysql 的 if 既可以作為表達式用,也可以在存儲過程中作為流程控制語句使用,如下是作為表達式使用:
if 表達式
IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL), 則 IF() 的返回值為 expr2;否則返回值則為 expr3。IF() 的返回值為數字值或字符串值,具體情況視其所在語境而定。
IFNULL(expr1,expr2)
假如 expr1 不為 NULL,則 IFNULL() 的返回值為 expr1 ;否則其返回值為 expr2 。IFNIULL() 的返回值是數字或是字符串,具體情況取決於其所使用的語境。
select IFNULL(1,0); -> 1 select IFNULL(NULL,10); -> 10 select IFNULL(1/0,10); -> 10 select IFNULL(1/0,'yes'); -> 'yes'
IFNULL(expr1,expr2) 的默認結果值為兩個表達式中更加"通用"的一個,順序為 STRING、REAL 或 INTEGER。