@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')