3.8 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]
例
- 例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')
親トピック: 列変換ファンクション