3.5.6. デコード関数
デコード機能により、Data Virtualization サーバーが結果セット内の列の内容を確認し、変更またはデコードし、アプリケーションが結果をより適切に使用できるようにできます。
機能 | 定義 | データタイプ制約 |
---|---|---|
DECODESTRING(x, y [, z]) |
任意の区切り文字 | すべての文字列 |
DECODEINTEGER(x, y [, z]) |
任意の区切り文字 z と | すべての文字列パラメーター、整数を返す |
各関数呼び出しには、以下の引数が含まれます。
-
X
はデコード操作の入力値です。通常、これは列名です。 -
Y は、入力値と出力値の
区
切ったセットが含まれるリテラル文字列です。 -
z
は、これらのメソッドのオプションのパラメーターで、y で指定された文字列がどの区切り文字であるかを指定できます。
たとえば、アプリケーションは、IS_IN_STOCK
という列が含まれる PARTS
というテーブルにクエリーを実行します。これには、アプリケーションが処理するために整数に変更する必要のあるブール値が含まれます。この場合、DECODEINTEGER
関数を使用してブール値を整数に変更できます。
SELECT DECODEINTEGER(IS_IN_STOCK, 'false, 0, true, 1') FROM PartsSupplier.PARTS;
SELECT DECODEINTEGER(IS_IN_STOCK, 'false, 0, true, 1') FROM PartsSupplier.PARTS;
Data Virtualization システムが結果セットで false
の値に遭遇すると、値は 0 に置き換えられます。
整数を使用する代わりに、アプリケーションに文字列の値が必要な場合は、DECODESTRING
関数を使用して必要な文字列値を返すことができます。
SELECT DECODESTRING(IS_IN_STOCK, 'false, no, true, yes, null') FROM PartsSupplier.PARTS;
SELECT DECODESTRING(IS_IN_STOCK, 'false, no, true, yes, null') FROM PartsSupplier.PARTS;
このサンプルクエリーは、2 つの入力/出力値のペアに加えて、列に前述の入力値が含まれない場合に使用する値を提供します。IS_IN_STOCK 列の行に true または false が含まれていない場合、Data Virtualization サーバーは null を結果セットに挿入します。
これらの DECODE 関数を使用する場合は、文字列内で必要な入力/出力値のペアをいくつでも提供できます。デフォルトでは、Data Virtualization システムはコンマ区切りの区切り文字を想定しますが、関数呼び出しに 3 番目のパラメーターを追加して別の区切り文字を指定することができます。
SELECT DECODESTRING(IS_IN_STOCK, 'false:no:true:yes:null',':') FROM PartsSupplier.PARTS;
SELECT DECODESTRING(IS_IN_STOCK, 'false:no:true:yes:null',':') FROM PartsSupplier.PARTS;
DECODE 文字列のキーワード null
を入力値または出力値のいずれかとして使用し、null 値を表すことができます。ただし、リテラル文字列 null
を入力または出力値として使用する必要がある場合(つまり null という単語が列に表示され、null 値ではない)は、単語を引用符( 「null」
)に記述できます。
SELECT DECODESTRING( IS_IN_STOCK, 'null,no,"null",no,nil,no,false,no,true,yes' ) FROM PartsSupplier.PARTS;
SELECT DECODESTRING( IS_IN_STOCK, 'null,no,"null",no,nil,no,false,no,true,yes' ) FROM PartsSupplier.PARTS;
DECODE 関数が列に一致する出力値が見つからない場合で、デフォルト値を指定しない場合、DECODE 関数はその列にある Data Virtualization サーバーが元の値を返します。