SQL OracleのDECODEのサンプル

OracleのDECODEのサンプルです。

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

目次

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

DECODEとは

DECODE(列名,値1,値1の時に返す値,値2,値2の時に返す値・・・,それ以外に返す値)
  • テーブルの列にある値を読み取り、その値に応じて指定した値を返します。if文と同じです。
    例:ある列の値が、"red"のときは"赤"を返し、"blue"のときは"青"を返し、それ以外のときは、"その他"を返す。
  • 判定する値は、1つだけでなく、複数可能です。
  • SQL標準のcaseも同じことができます。
    →caseは他DBでも使用できかつより複雑なこともできるのでcaseを使用します。
  • 以下は、OracleのDECODEのリンクです。
    https://docs.oracle.com/cd/E16662_01/doc/timesten.1121/b56051/ttsql221.htm

select句で使用する

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

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

SQL

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

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

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

結果

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

test
その他

where句で使用する

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

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

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

例1

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

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

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

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

colorテーブル
id name
1 red

nameのredが一致した行が表示されます。以下のSQLと同じです。

select * from color
where name in ('red','orange');

 

例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が一致した行が表示されます。以下のSQLと同じです。

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

関連の記事

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

△上に戻る