@CASE
@CASEファンクションでは、一連の値テストに応じて値を1つ選択します。@CASEでテストできるケース数に制限はありません。ケース数が多い場合は、パフォーマンスを最適化するために最も頻繁に検出される条件を最初にリストします。
Oracle GoldenGateでは、このファンクションで、Unicode、およびMicrosoft Windows、UNIX、Linuxオペレーティング・システムのネイティブ・エンコーディングの文字列を格納する列内の文字を表すために、エスケープ・シーケンスの使用をサポートしています。引数がUnicodeで指定される場合、ターゲット列はSQL Unicodeデータ型である必要があります。
このファンクションは、NCHARまたはNVARCHARデータ型をサポートしていません。
構文
@CASE (<value>, <test_value1>, <test_result1>
[, <test_value2>, <test_result2>] [, ...]
[, <default_result>]
<value>
テストする値(列名など)。リテラルは一重引用符で囲みます。
<test_value>
<value>に有効な結果。リテラルは一重引用符で囲みます。
<test_result>
<test_value>の値に基づいて返される値です。リテラルは一重引用符で囲みます。
<default_result>
<value>がどの<test_value>値にも該当しない場合は返されるデフォルト値。リテラルは一重引用符で囲みます。
例
例1
次の例では、PRODUCT_CODEがCARの場合はA carを返し、PRODUCT_CODEがTRUCKの場合はA truckを返します。PRODUCT_CODEが最初の2つのケースのいずれにも該当しない場合は、デフォルト値が指定されていないため、FIELD_MISSINGインジケーションが返されます。
@CASE (PRODUCT_CODE, 'CAR', 'A car', 'TRUCK', 'A truck')
例2
次の例は前述の例に似ていますが、ここではデフォルト値が指定されています。PRODUCT_CODEがCARにもTRUCKにも該当しない場合、このファンクションはA vehicleを返します。
@CASE (PRODUCT_CODE, 'CAR', 'A car', 'TRUCK', 'A truck', 'A vehicle')