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)

ここでは「DECODE」を使って「NULL」を判定しました。

「NULL」のレコードに対してコメント「入力忘れ」をつけました。「DECODE」ではNULLもそのまま「NULL」として使用できます。

DECODEの問題点

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

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

Oracleで条件をわけるCASE

汎用性の低い「DECODE」は使用する機会は少ないかもしれません。

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