Oracle to MySQL DECODE to IF か CASE

MySQL
スポンサーリンク

OracleからMySQLへの変換。

プログラムソース中で使うクエリで、

OracleのDECODEは、MySQLでは「IF」または「CASE」で代用できる。

 

OracleのDECODEは、

select DECODE(フィールド名, 大人だったら, ビールにする, 子供だったら, コーラにする, それ以外の値はカルピスにする)

みたく書いて条件分岐に使う。

 

 

  • 大人だったら, ビールにする, それ以外はコーラ

みたいにしたいとき

Oracleで、

select DECODE(フィールド名, 大人, ビール, コーラ)

をMySQL用に書き換えるときは、

select IF(フィールド名=大人, ビール, コーラ)

と書く。

IFはこれだけだったらExcel関数のIFみたいですなー。

比較演算子(というのか?)の部分は、JSやPHPで使うような「==」ではだめ。「=」とか「>」とかが使える。

 

 

MySQLのcaseの文法は以下の様な感じ。

SELECT CASE フィールド
  WHEN 大人 THEN ビール
  ELSE コーラ
  END;

参考にしたサイト

公式ヘルプ

CASE例

 

コメント