目次

Search

  1. はじめに
  2. 関数リファレンス
  3. 定数
  4. 演算子
  5. 日付
  6. 関数
  7. システム変数
  8. データ型リファレンス

関数リファレンス

関数リファレンス

DECODE

DECODE

指定した値をカラムで検索します。値を見つけると、定義された結果値を返します。1つのDECODE関数内には、いくつでも検索を指定できます。
DECODEを使って文字列カラムの値を検索する場合には、RTRIM関数で末尾の空白を削除することも、検索文字列内に空白を含めることもできます。

構文

DECODE(
value
,
first_search
,
first_result
[,
second_search
,
second_result
]...[,
default
] )
引数
必須/
オプション
説明
value
必須
任意のデータ型(Binaryを除く)。検索対象となる値を渡します。有効な式を必要に応じて入力できます。
search
必須
value引数と同じデータ型を持つ任意の値。検索したい値を渡します。検索する値と値引数は、必ず一致させる必要があります。値の一部を検索することはできません。また、検索する値では大文字と小文字が区別されます。
例えば、特定のカラムで文字列'Halogen Flashlight'を検索したい場合には、'Halogen'だけでなく'Halogen Flashlight'と入力する必要があります。'Halogen'と入力すると、一致する値が見つかりません。有効な式を必要に応じて入力できます。
result
必須
任意のデータ型(Binaryを除く)。検索で一致した値が見つかったときに返す値です。有効な式を必要に応じて入力できます。
default
オプション
任意のデータ型(Binaryを除く)。検索で一致した値が見つからなかったときに返す値です。有効な式を必要に応じて入力できます。

戻り値

一致した値が見つかった場合は、
First_result
一致した値が見つからなかった場合は、デフォルト値。
一致した値が見つからなかった場合、デフォルト値を指定していなければNULL。
複数の条件が満たされている場合でも、
データ統合
は最初に一致した結果を返します。
データにマルチバイト文字が含まれ、DECODE式で文字列データを比較する場合、タスクを実行するSecure Agentのコードページに応じた戻り値が返されます。

DECODEとデータ型

DECODEを使う場合、戻り値のデータ型は常に最大の精度を持つ結果のデータ型と同じです。
たとえば、次のような式があるとします。
DECODE ( CONST_NAME,          'Five', 5,          'Pythagoras', 1.414213562,          'Archimedes', 3.141592654,          'Pi', 3.141592654 )
この式の戻り値は5、1.414213562、3.141592654です。最初の結果は整数で、残りの結果は小数です。Decimalデータ型は整数データ型よりも精度が高くなります。この式では、結果は常にDecimalデータ型として記述します。
少なくとも1つの結果がDoubleの場合、戻り値のデータ型はDoubleになります。
文字列戻り値と数値戻り値の両方を備えるDECODE関数は作成できません。
例えば、次の式は、戻り値に文字列と数値の両方が含まれるため無効です。
DECODE ( CONST_NAME,          'Five', 5,          'Pythagoras', '1.414213562',          'Archimedes', '3.141592654',          'Pi', 3.141592654 )

次の式は、DECODEを使用し、特定のITEM_IDを検索してITEM_NAMEを返します。
DECODE( ITEM_ID, 10, 'Flashlight',                  14, 'Regulator',                  20, 'Knife',                  40, 'Tank',                  'NONE' )
ITEM_ID  
RETURN VALUE
10
Flashlight
14
Regulator
17
NONE
20
Knife
25
NONE
NULL
NONE
40
Tank
検索値がITEM_IDに一致しないため、DECODEは項目17および 25に対してデフォルト値のNONEを返します。また、NULLのITEM_IDに対してもNONEを返しています。
次の式は、複数の列および条件をテストして、上から順に'TRUE'であるか'FALSE'であるかを求めます。
DECODE( TRUE,         Var1 = 22, 'Variable 1 was 22!',         Var2 = 49, 'Variable 2 was 49!',         Var1 < 23, 'Variable 1 was less than 23.',         Var2 > 30, 'Variable 2 was more than 30.',         'Variables were out of desired ranges.')
Var1   
Var2   
RETURN VALUE
21
47
Variable 1 was less than 23.
22
49
Variable 1 was 22!
23
49
Variable 2 was 49!
24
27
Variables were out of desired ranges.
25
50
Variable 2 was more than 30.