OceanBase logo

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

ドキュメント

会社概要

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

日本 - 日本語
International - English
中国站 - 简体中文
クラウドで始める

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

クラウドで始める
编组
すべての製品
    • データベース
    • アイコンOceanBaseデータベース
    • アイコンOceanBase Cloud
アイコン

OceanBase Cloud

すべてのバージョン

    OceanBase ロゴ

    AI時代を支える分散データベース

    日本 - 日本語
    International - English
    中国站 - 简体中文
    プロダクト
    OceanBase Cloudエンタープライズ版コミュニティ版OceanBase seekdb
    会社概要
    OceanBaseについてトラストセンター法的情報お問い合わせ
    公式アカウント
    ConnpassXQiitaLumaGitHub

    © OceanBase 2026. All rights reserved

    クラウドサービス契約個人情報保護ポリシーセキュリティ
    お問い合わせ
    ドキュメントフィードバック
    1. ホーム
    2. OceanBase Cloud
    3. master
    アイコンOceanBase Cloud
    master
    データベース
    • OceanBaseデータベース
    • OceanBase Cloud
    • master

    クエリでの CASE 関数の使用

    最終更新日:2026-06-08 08:05:35  更新
    シェア
    このページの内容
    例
    例 1
    例 2

    折りたたみ

    シェア

    CASE 式を使用すると、サブプログラムを呼び出すことなく IF...THEN...ELSE のようなロジックを実装できます。CASE 式には、単純な CASE 式と検索条件付きの CASE 式の2つの使用方法があります。

    例

    例 1

    クエリで単純な CASE 式を使用して、国コードの略称を正式名称に変換します。

    1. t_case テーブルを作成します。

      obclient> CREATE TABLE t_case(id number NOT NULL PRIMARY KEY, abbr varchar(5));
      Query OK, 0 rows affected
      
    2. t_case テーブルにデータを挿入します。

      obclient> INSERT INTO t_case VALUES (1,'US'),(2,'UK'),(3,'CN'),(4,'JP');
      Query OK, 4 rows affected
      Records: 4  Duplicates: 0  Warnings: 0
      
    3. CASE 式を使用して、国コードに対応する正式名称をクエリします。

      obclient> SELECT id, abbr,
                CASE abbr
                WHEN 'US' THEN 'America'
                WHEN 'UK' THEN 'English'
                WHEN 'CN' THEN 'China'
                ELSE 'UNKOWN'
                END full_name
                FROM t_case ;
      +----+------+-----------+
      | ID | ABBR | FULL_NAME |
      +----+------+-----------+
      |  1 | US   | America   |
      |  2 | UK   | English   |
      |  3 | CN   | China     |
      |  4 | JP   | UNKOWN    |
      +----+------+-----------+
      4 rows in set
      

    例 2

    クエリで検索条件付きの CASE 式を使用します。

    1. t_case2 テーブルを作成します。

      obclient> CREATE TABLE t_case2(id number NOT NULL PRIMARY KEY, c_date date );
      Query OK, 0 rows affected
      
    2. t_case2 テーブルにデータを挿入します。

      obclient> INSERT INTO t_case2(id,c_date) 
                VALUES (1,to_date('2019-03-01','yyyy-mm-dd'))
                ,(2,to_date('2019-05-08','yyyy-mm-dd'))
                ,(3,to_date('2019-07-07','yyyy-mm-dd'))
                ,(4,to_date('2019-10-11','yyyy-mm-dd'))
                ,(5,to_date('2019-12-12','yyyy-mm-dd'))
                ,(6,to_date('2020-01-05','yyyy-mm-dd'));
      Query OK, 6 rows affected
      Records: 6  Duplicates: 0  Warnings: 0
      
    3. 検索条件付きの CASE 式を使用して、Duration 列のデータをクエリします。

      obclient> SELECT id, c_date,
                     CASE
                    WHEN months_between(sysdate, c_date) > 12 THEN 'More than one year ago'
                    WHEN months_between(sysdate, c_date) > 9 THEN 'More than three quarters ago'
                    WHEN months_between(sysdate, c_date) > 6 THEN 'More than half a year ago'
                    WHEN months_between(sysdate, c_date) > 3 THEN 'More than a quarter ago'
                    WHEN months_between(sysdate, c_date) >= 0 THEN 'Within a quarter'
                    ELSE 'Illegal'
                    END "Duration"
                    FROM t_case2;
      +----+-----------+------------------------+
      | ID | C_DATE    | Duration               |
      +----+-----------+------------------------+
      |  1 | 01-MAR-19 | More than one year ago |
      |  2 | 08-MAY-19 | More than one year ago |
      |  3 | 07-JUL-19 | More than one year ago |
      |  4 | 11-OCT-19 | More than one year ago |
      |  5 | 12-DEC-19 | More than one year ago |
      |  6 | 05-JAN-20 | More than one year ago |
      +----+-----------+------------------------+
      6 rows in set
      

    前のトピック

    クエリでの集計関数の使用
    最後

    次のトピック

    DBLinkを使用したクエリ
    次
    このページの内容
    例
    例 1
    例 2