MySQL @Wiki 実用リファレンス

IF

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可


IF

IF(expr1,expr2,expr3)
expr1 が TRUE(expr1 <> 0 および 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 以外のカラムの型になる(この動作は MySQL 4.0.3 で新たに導入された)。
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) のテストが行われるためである。これでは期待した結果が得られない場合がある。2 番目の式では、元の浮動小数点値がゼロ以外の値かどうか比較によってテストされる。比較の結果は整数として使用される。
IF() のデフォルトの戻り値型は、MySQL バージョン 3.23 では次のように計算される(デフォルトの戻り値型はテンポラリテーブルへの格納時に重要になる場合がある)。
戻り値
expr2 または expr3 が文字列を返す。 文字列
expr2 または expr3 が浮動小数点値を返す。 浮動小数点
expr2 または expr3 が整数を返す。 整数

expr2 と expr3 が文字列の場合、両方の文字列がケース非依存のときは結果もケース非依存になる(バージョン 3.23.51 以降)。




記事メニュー
ウィキ募集バナー