OracleのDECODE 条件をわける【SQL】

Oracleで条件をわけるには通常WHERE句を使用しますが、SELECT句の「DECODE」や「CASE」でも条件わけができます。

今回は「DECODE」を取り上げます。



DECODEの使い方

DECODEでは、指定した列が下記の場合にこのような結果を返します。

  • 値1 →結果1
  • 値2 →結果2
  • それ以外 →結果3

値のみで分岐した結果を返します。値のみなので式での判定は使えません。式を使うにはCASEが便利です。

Oracleで条件をわけるCASE

例1. DECODEで条件分岐するパターン

このDECODEでは学級委員の名前に「/学級委員」をつけて、書記の名前に「/書記」をつけてSELECTしています。

例2.DECODEで条件分岐するパターン(NULL)

ここではNULLのものに対してコメント「入力忘れ」をつけました。DECODEではNULLもそのまま「NULL」として扱えます。

DECODEの問題点

DECODEは式が使えません。なので大小比較やワイルドカードも使えません。

そしてDECODEと同じことがCASEでもできます。CASEの方が式・ワイルドカードに対応しており柔軟性が高いため、CASE式を使うことをおススメします。

Oracleで条件をわけるCASE

DECODEは使用する機会は少ないかもしれません。

以上、OracleのDECODEの使い方とパターンでした。