@CASE
使用 @CASE 函数可根据一系列值测试选择值。您可以使用 @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 不符合前两种情况,将返回 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')