expr1 が NULL でない場合、IFNULL() は expr1 を戻し、それ以外では expr2 を戻します。IFNULL() は、使用されている文脈によって、数値値もしくはストリング値を戻します。
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'
IFNULL(expr1,expr2) のデフォルトの結果値は、STRING 、REAL 、または INTEGER の順に、ふたつの式のより 「一般的」 なものです。式や MySQL が一時テーブルの IFNULL() によって戻された値を内部に蓄積しなければいけない場所に基づくテーブルの大文字小文字を考慮してください :
mysql>CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;mysql>DESCRIBE tmp;+-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | test | char(4) | | | | | +-------+---------+------+-----+---------+-------+
この例では、test カラムのタイプは CHAR(4) です。