ORACLE機能 SQL

[SQL] 検索結果に条件分岐を行う(CASE~WHEN)

投稿日:2017年4月8日 更新日:

検索した結果に対して条件分岐処理を入れて、表示を変えたい場合にはCASE~WHEN句を使用します。

構文

CASE~WHEN構文は、①値で分岐するパターンと②条件で分岐するパターンがあります。

① 値で分岐するパターン
CASE <値>   WHEN <比較値1> THEN <結果1>   WHEN <比較値2> THEN <結果2>   ELSE <結果その他> END
② 条件で分岐するパターン
CASE   WHEN <条件1> THEN <結果1>   WHEN <条件2> THEN <結果2>   ELSE <結果その他> END

①の書き方は、1つの値と比較値の単純な比較の場合に適しています。

②の書き方は、書き方1では書ききれないような単純な比較ではない場合に使用します。

サンプルソース

以下のテーブルをサンプルとします。

【TBL_SYAIN】
CDNAMEDEPTSCORE
001田中1038
002山本2092
003篠原1075
004米山9963
005藤田3049

例)dept値を分岐して名称に変換して表示する

結果
CD NAME DEPT ---- ------ -------- 001 田中 営業部 002 山本 開発部 003 篠原 営業部 004 米山 その他 005 藤田 総務部

例)score値によって結果を表示する

結果
CD NAME DEPT ---- ------ -------- 001 田中 不合格 002 山本 合格 003 篠原 補習 004 米山 補習 005 藤田 不合格

メモ

  • DECODE関数でも同様のことができます。

関連項目


スポンサーリンク

スポンサーリンク

-ORACLE機能, SQL

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ORACLE

[ORAエラー] ORA-01424: エスケープ文字に続く文字がないか、または無効です。

以下のように表示されます。 (日本語) ORA-01424: エスケープ文字に続く文字がないか、または無効です。 (英語 ...
ORACLE

[ORACLE] ディレクトリを作成する

ディレクトリを作成するには、CREATE DIRECTORY文を使用します。 構文 (ディレクトリを作成する) CREA ...
ORACLE

[ORACLE] パスワードの大文字小文字を区別しないようにする

Oracle11g以降のバージョンから、データベースにログインする時のパスワードが大文字小文字区別されるようになりました ...
ORACLE

[ORACLE] 権限・ロールの付与を行う

権限・ロールの付与を行うには、GRANTを使用します。 構文 (権限・ロールの付与を行う) GRANT <権限名、ロール ...
ORACLE

[ORAエラー] ORA-00903: 表名が無効です。

以下のように表示されます。 (日本語) ORA-00903: 表名が無効です。 (英語) ORA-00903: inva ...

スポンサーリンク