SQL OracleのDECODEのサンプル

OracleのDECODEのサンプルです。

確認環境
・Oracle Express Edition 11g Release 2

目次

サンプル DECODE
  where句で使用する

DECODE

DECODE(列名,値1,値1の時に返す値,・・・,左記以外の値の時に返す値)
  • テーブルの列にある値を読み取り、その値に応じて値を返すif文です。
    例:ある列の値が、"A"のときは、"赤"を返し、"A"以外のときは、"青"を返す
  • 判定する値は、1つだけでなく、複数可能です。
  • 以下は、OracleのDECODEのリンクです。
    https://docs.oracle.com/cd/E16662_01/doc/timesten.1121/b56051/ttsql221.htm

サンプル

以下のテーブルがあるとします。

colorテーブル
id name
1 red
2 blue
3 grey

SQL

上記テーブルに対してdecodeを使用します。

select decode(name,'red','赤','blue','青','その他')
from color;

1行目は、decodeで、colorテーブルのname列の値がredであれば「赤」、blueであれば「青」、それ以外の値であれば「その他」を返します。

結果

結果は、以下のとおりです。

その他

where句で使用する

decodeはwhere句でも使用できます。

以下のテーブルがあるとします。

colorテーブル
id name
1 red
2 blue
3 grey

例1

上記テーブルに対してdecodeを使用します。

select * from color
where name = decode(name,'red','red','green');

2行目は、decodeでname列の値がredのときはred、それ以外のときは、greenで検索します。

結果は、以下のとおりです。

colorテーブル
id name
1 red

nameのredが一致した行が表示されます。

例2

今度は、decodeの最後の指定する値に一致する値をセットします。

以下のテーブルがあるとします。

colorテーブル
id name
1 red
2 blue
3 grey

SQL

上記テーブルに対してdecodeを使用します。

select * from color
where name = decode(name,'red','red','blue');

2行目は、decodeでname列の値がredのときはred、それ以外のときは、blueで検索します。

結果は、以下のとおりです。

colorテーブル
id name
1 red
2 blue

nameのredとblueが一致した行が表示されます。

関連の記事

Oracle PL/SQLのif文のサンプル

△上に戻る