目次

Search

  1. はじめに
  2. タスクフローとリニアタスクフロー
  3. タスクフロー
  4. リニアタスクフロー

タスクフロー

タスクフロー

decode

decode

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

構文

util:decode(value, search1, result1, args, default)
次の表に、引数を示します。
引数
必須/
オプション
説明
value
必須
検索を行う値を渡します。
任意の有効なトランスフォーメーション式を入力できます。バイナリ以外の任意のデータ型を渡すことができます。
NULL値を渡すには、次の形式で空のシーケンスを指定する必要があります:
()
search1
必須
検索を行う対象の値を渡します。
任意の有効なトランスフォーメーション式を入力できます。value引数と同じデータ型の任意の値を渡すことができます。検索する値と値引数は、必ず一致させる必要があります。値の一部を検索することはできません。また、検索する値では大文字と小文字が区別されます。
例えば、特定のカラムで文字列'Halogen Flashlight'を検索したい場合には、'Halogen'だけでなく'Halogen Flashlight'と入力する必要があります。'Halogen'と入力すると、一致する値が見つかりません。
NULL値を渡すには、次の形式で空のシーケンスを指定する必要があります:
()
result1
必須
検索で一致した値が見つかったときに返す値です。
任意の有効なトランスフォーメーション式を入力して、バイナリ以外の任意のデータ型を渡すことができます。
NULL値を渡すには、次の形式で空のシーケンスを指定する必要があります:
()
args
必須
カンマで区切られた検索値と結果値のペア。
例えば、以下の構文を使用します。
util:decode(value, search1, result1, search2, result2, searchn, resultn, default)
NULL値を渡すには、次の形式で空のシーケンスを指定する必要があります:
()
default
必須
検索で一致した値が見つからなかったときに返す値です。
任意の有効なトランスフォーメーション式を入力して、バイナリ以外の任意のデータ型を渡すことができます。
NULL値を渡すには、次の形式で空のシーケンスを指定する必要があります:
()

戻り値

一致した値が見つかった場合は、
result1
一致した値が見つからなかった場合は、
default
値。
一致した値が見つからなかった場合、デフォルト値を指定していなければNULL。
複数の条件に一致した場合でも、decodeは最初に一致した結果を返します。

decodeとデータ型

decodeを使用した場合、戻り値のデータ型は最大の精度を持つ結果のデータ型と常に同じものとなります。
たとえば、次のような式があるとします。
util:decode( CONST_NAME          'Five', 5,          'Pythagoras', 1.414213562,          'Archimedes', 3.141592654,          'Pi', 3.141592654 )
この式の戻り値は、5、1.414213562、および3.141592654です。最初の結果は整数で、その他の結果は小数です。Decimalデータ型は、Integerデータ型よりも精度が高くなります。この式は常に結果を固定小数点値として書き込みます。
文字列戻り値と数値戻り値の両方を持つDECODE関数は作成できません。
例えば、下記の式は有効ではありません。
util:decode( CONST_NAME          'Five', 5,          'Pythagoras', '1.414213562',          'Archimedes', '3.141592654',          'Pi', 3.141592654 )
上記の式を検査すると、下記のエラーメッセージが表示されます。
Function cannot resolve operands of ambiguously mismatching datatypes.

次の式は、decodeを使用し、特定のITEM_IDを検索してITEM_NAMEを返します。
util: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'であるかを求めます。
util: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.