Hi, I'm Ask INFA!
What would you like to know?
ASK INFAPreview
Please to access Ask INFA.

目次

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.