CASE 関数

CASE は、単純形式と検索形式という 2 つの形式を持つ複合関数です。どちらの形式の CASE も値を戻します。その値は、後続の処理のパスを制御する結果です。

構文

いずれの形式の CASE でも、値は、WHEN 文節の中で定義される規則のセットに従って戻されます。

単純形式の場合、source_value に一致するものが見つかるまで、各 test_value との比較がなされます。CASE 関数の結果は、対応する result_value の値です。したがって、source_value のデータ・タイプは、各 test_value のデータ・タイプと比較可能なものでなければなりません。

CASE 関数には、少なくとも 1 つの WHEN が必要です。ELSE はオプションです。デフォルトの ELSE 式は NULL です。CASE 式は END で区切ります。テスト値は、リテラル値でなくてもかまいません。

検索 WHEN 文節バージョンも同様ですが、異なる複数の値をテストすることができる点で柔軟性の高い形式です。

次の例は、単純 WHEN 文節による CASE 関数の使用例です。この例では、CASE は、CASE キーワードの横で指定される 1 つの変数によってのみ判別できます。
 DECLARE CurrentMonth CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);

  SET MonthText = 
   CASE CurrentMonth
      WHEN '01' THEN 'January'
      WHEN '02' THEN 'February'
      WHEN '03' THEN 'March'
      WHEN '04' THEN 'April'
      WHEN '05' THEN 'May'
      WHEN '06' THEN 'June'
      ELSE 'Second half of year'
   END
次の例は、検索 WHEN 文節による CASE 関数の使用例です。この例も、1 つの変数 CurrentMonth によって判別されます。
 DECLARE CurrentMonth CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);

  SET MonthText = 
   CASE
      WHEN Month = '01' THEN 'January'
      WHEN Month = '02' THEN 'February'
      WHEN Month = '03' THEN 'March'
      WHEN Month = '04' THEN 'April'
      WHEN Month = '05' THEN 'May'
      WHEN Month = '06' THEN 'June'
      ELSE 'Second half of year'
   END
検索 when 文節では、WHEN 文節でさまざまな変数を使用して結果を判別することができます。これは、以下の検索 when 文節の例で示されています。
 DECLARE CurrentMonth CHAR;
  DECLARE CurrentYear CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);
  SET CurrentYear = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 1 FOR 4);

  SET MonthText = 
    CASE
      WHEN CurrentMonth = '01' THEN 'January'
      WHEN CurrentMonth = '02' THEN 'February'
      WHEN CurrentMonth = '03' THEN 'March'
      WHEN CurrentYear = '2000' THEN 'A month in the Year 2000'
      WHEN CurrentYear = '2001' THEN 'A month in the Year 2001'
      ELSE 'Not first three months of any year or a month in the Year 2000 or 2001'
    END;
関連概念
ESQL の概要
関連タスク
ESQL の開発
関連資料
構文図: 使用可能なタイプ
複合 ESQL 関数
MOVE ステートメント
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05600_