CASE 
        value WHEN
          [compare_value] THEN
          result [WHEN
          [compare_value] THEN
          result ...] [ELSE
          result] END
          CASE WHEN [
        condition] THEN
          result [WHEN
          [condition] THEN
          result ...] [ELSE
          result] END
          最初の例は、value=compare_valueresult
          を戻します。2番目は true
          である最初の条件に結果を戻します。一致する結果値がない場合は、ELSE
          のあとの結果が戻され、ELSE
          パートがない場合は、NULL
          が戻されます。
        
mysql>SELECT CASE 1 WHEN 1 THEN 'one'->WHEN 2 THEN 'two' ELSE 'more' END;-> 'one' mysql>SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;-> 'true' mysql>SELECT CASE BINARY 'B'->WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;-> NULL
          CASE
          式のデフォルトの戻り値タイプは、すべての戻り値の適合集合体タイプですが、使用される文脈にもよります。ストリング文脈で使用される場合は、結果はストリングとして戻されます。数値文脈で使用される場合は、結果は
          10
          進値、実数値、または整数値として戻されます。
        
          注記
          :ここで示されている CASE
          式 の構文は、ストアド
          ルーチン内で使用する場合、項17.2.10.2. 「CASEステートメント」
          で説明されている、CASE
          文
          とはやや異なります。CASE 文は
          ELSE NULL
          句を持つことができず、END
          でなく、END CASE で終了します。
        
          expr1 が TRUE
          である場合は ( expr1
          <> 0expr1 <>
          NULLIF() は
          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)
          は、IF(0) のテストの結果として
          0.1
          が整数値に変換されるため、0
          を戻します。これは不測の結果であるかもしれません。2
          番目の例では、比較テストは、オリジナルの浮動小数点値がゼロ以外であるかテストします。比較の結果は整数として使用されます。
        
          デフォルトの IF()
          の戻り値タイプは (
          一時テーブルに保管される時に重要な場合あり
          ) 、次のように計算されます :
        
| 式 | 戻り値 | 
| expr2またはexpr3はストリングを戻す | ストリング | 
| expr2またはexpr3は浮動小数点値を戻す | 浮動小数点 | 
| expr2またはexpr3は整数を戻す | 整数 | 
          expr2 と
          expr3
          の両方がストリングで、どちらかのストリングが大文字小文字の区別をする場合、結果は大文字子目の区別があります。
        
          注記 :IF
          文
          もあり、それはここで説明されている
          IF() 関数
          とは異なります。項17.2.10.1. 「IF ステートメント」
          を参照してください。
        
          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 | varbinary(4) | | | | | +-------+--------------+------+-----+---------+-------+
          この例では、test
          カラムのタイプは CHAR(4) です。
        
          expr1 =
          expr2NULL
          を返し、それ以外は expr1
          を返します。これは、CASE WHEN
          
          と同様です。
        expr1 =
          expr2 THEN NULL ELSE
          expr1 END
mysql>SELECT NULLIF(1,1);-> NULL mysql>SELECT NULLIF(1,2);-> 1
          MySQL
          は、引数が等しくない場合、expr1
          を 2 度評価しますのでご注意ください。
        

