Hitachi

Hitachi Advanced Data Binder SQLリファレンス


8.16.1 DECODE

対象データと比較データを順次比較し,一致した場合は対応する返却値を返します。対象データとすべての比較データが一致しない場合は,既定返却値を返します。

複数の比較データを指定した場合は,最初に一致した比較データに対応する返却値を返します。

〈この項の構成〉

(1) 指定形式

スカラ関数DECODE::=DECODE(対象データ,比較データ,返却値
                        〔,比較データ,返却値〕…
                        〔,既定返却値〕)
 
  対象データ::={値式|NULL}
  比較データ::={値式|NULL}
  返却値::={値式|NULL}
  既定返却値::={値式|NULL}

(2) 指定形式の説明

対象データ

対象データを指定します。対象データは,値式の形式で指定するか,またはNULLを指定します。値式については,「7.21 値式」を参照してください。

比較データ

比較データを指定します。

指定規則を次に示します。

  • 比較データは,値式の形式で指定するか,またはNULLを指定します。値式については,「7.21 値式」を参照してください。

  • 最初に指定する比較データには,NULLを指定できません。

  • 最初に指定する比較データには,?パラメタを単独で指定できません。

  • 2つ目以降の比較データに?パラメタを単独で指定した場合,?パラメタのデータ型には,最初の比較データのデータ型が仮定されます。

返却値

対象データが比較データと一致したときの返却値を指定します。

指定規則を次に示します。

  • 返却値は,値式の形式で指定するか,またはNULLを指定します。値式については,「7.21 値式」を参照してください。

  • 最初に指定する返却値には,NULLを指定できません。

  • 最初に指定する返却値には,?パラメタを単独で指定できません。

  • 2つ目以降の返却値に?パラメタを単独で指定した場合,?パラメタのデータ型には,最初の返却値のデータ型が仮定されます。

既定返却値

対象データとすべての比較データが一致しないときの返却値(既定返却値)を指定します。既定返却値の指定を省略した場合は,既定返却値としてNULLが指定されたと仮定されます。

指定規則を次に示します。

  • 既定返却値は,値式の形式で指定するか,またはNULLを指定します。値式については,「7.21 値式」を参照してください。

  • 既定返却値に?パラメタを単独で指定した場合,?パラメタのデータ型には,最初の返却値のデータ型が仮定されます。

(3) 規則

  1. 対象データ比較データ返却値,および既定返却値には,数データ,文字データまたは日時データを指定してください。

  2. 対象データ比較データ返却値,または既定返却値に指定するNULLは,ナル値を意味しています。

  3. 対象データおよび比較データには,比較できるデータ型を指定してください(NULLの指定を除く)。比較できるデータ型については,「6.2.2 変換,代入,比較できるデータ型」の「(1) 比較できるデータ型」を参照してください。

    ただし,対象データおよび比較データが,文字データまたは日時データである場合は,次の表を基にデータ型の組み合わせを指定してください。

    表8‒62 スカラ関数DECODEでの,対象データおよび比較データに指定できるデータ型の組み合わせ

    対象データ

    比較データ

    文字データ

    日時データ

    日付データの既定の入力表現である文字列定数

    時刻データの既定の入力表現である文字列定数

    時刻印データの既定の入力表現である文字列定数

    そのほかのデータ

    日付データ

    時刻データ

    時刻印データ

    文字データ

    日付データの既定の入力表現である文字列定数

    ×

    ×

    ×

    時刻データの既定の入力表現である文字列定数

    ×

    ×

    ×

    時刻印データの既定の入力表現である文字列定数

    ×

    ×

    ×

    そのほかのデータ

    ×

    ×

    ×

    日時データ

    日付データ

    ×

    ×

    ×

    時刻データ

    ×

    ×

    ×

    ×

    ×

    時刻印データ

    ×

    ×

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  4. 返却値および既定返却値には,比較できるデータ型を指定してください(NULLの指定を除く)。比較できるデータ型については,「6.2.2 変換,代入,比較できるデータ型」の「(1) 比較できるデータ型」を参照してください。

    ただし,返却値および既定返却値が,文字データまたは日時データである場合は,次の表を基にデータ型の組み合わせを指定してください。

    表8‒63 スカラ関数DECODEでの,返却値および既定返却値に指定できるデータ型の組み合わせ

    返却値

    既定返却値,または返却値

    文字データ

    日時データ

    日付データの既定の入力表現である文字列定数

    時刻データの既定の入力表現である文字列定数

    時刻印データの既定の入力表現である文字列定数

    そのほかのデータ

    日付データ

    時刻データ

    時刻印データ

    文字データ

    日付データの既定の入力表現である文字列定数

    ×

    ×

    ×

    時刻データの既定の入力表現である文字列定数

    ×

    ×

    ×

    時刻印データの既定の入力表現である文字列定数

    ×

    ×

    ×

    そのほかのデータ

    ×

    ×

    ×

    日時データ

    日付データ

    ×

    ×

    ×

    ×

    ×

    時刻データ

    ×

    ×

    ×

    ×

    ×

    ×

    時刻印データ

    ×

    ×

    ×

    ×

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

    注※

    返却値を複数指定していて,すべての返却値が文字データまたは日時データである場合,それぞれの返却値に指定できるデータ型の組み合わせは,「表8‒63 スカラ関数DECODEでの,返却値および既定返却値に指定できるデータ型の組み合わせ」のとおりになります。

  5. 比較データおよび返却値の組は,127個まで指定できます。

  6. 実行結果のデータ型とデータ長は,返却値および既定返却値の結果のデータ型によって,「7.21.2 値式の結果のデータ型」で説明している規則に従って決まります。

    なお,返却値および既定返却値NULLの指定は,実行結果のデータ型とデータ長の決定に関係しません。

  7. 実行結果の値は,非ナル値制約なし(ナル値を許す)となります。

  8. 対象データがナル値の場合,比較データにNULLを指定したときに,対応する返却値が返されます。

(4) 例題

例題1

T1C2列に格納されている国名の略号を次のように変換します。

  • JPNJapan

  • INDIndia

  • ナル値 → NODATA

  • その他 → Other

SELECT "C1",DECODE("C2",'JPN','Japan','IND','India',NULL,'NODATA','Other')
    FROM "T1"

[図データ]

例題2

社員表(EMPLIST)を検索して次に示す値を求めます。

  • 部署コード(SCODE)ごとに,所属する男性と女性の人数を求める

SELECT "SCODE",SUM(DECODE("SEX",'M',1,0)) AS "Men",
               SUM(DECODE("SEX",'F',1,0)) AS "Women"
    FROM "EMPLIST"
    GROUP BY "SCODE"

[図データ]