Teradata CASE & COALESCE

17 Mar 2025 | 阅读 2 分钟

CASE 和 COALESCE 这两个函数都在 Teradata 中用于不同的目的。两个函数具有不同的功能。

CASE 表达式

Teradata CASE 语句提供了灵活性,可以根据表达式中指定的条件为列获取备用值。

CASE 表达式针对条件或 WHEN 子句评估每一行,并返回第一个匹配的结果;如果没有匹配项,则返回 ELSE 部分的结果。

语法

以下是 CASE 表达式的语法。

示例

考虑下表中以下员工记录。

Employee_Id(员工编号)年龄薪金Marital_Status(婚姻状况)
2020012220,0001
2020022525,0001
2020033035,0002
2020042632,0002
2020053240,0002

在上面的示例中,我们评估 Marital_Status 列。如果婚姻状况为单身,则返回 1;如果婚姻状况为已婚,则返回 2。否则,它将返回值设为“不确定”。

现在,我们将对 Marital_Status 列应用 CASE 语句,如下所示

执行上述代码后,会产生以下输出。

Teradata CASE & COALESCE

上面的 CASE 表达式也可以用以下方式编写,这将产生与上面相同的结果。

COALESCE 表达式

Teradata COALESCE 用于 NULL 处理。COALESCE 是一个语句,它返回表达式的第一个非空值。如果表达式的所有参数的计算结果均为 NULL,则返回 NULL。以下是语法。

语法

这是 COALESCE 函数的基本语法

示例

考虑以下 Student(学生)表。

Teradata CASE & COALESCE

现在,我们可以使用 COALESCE 函数来确定要选择哪个电话号码,如下所示

在上面的示例中,我们将首先搜索 Landline_no。如果该值为 NULL,它将分别搜索 Mobile_no。如果这两个数字均为 NULL,则它将返回“不可用”。如果没有参数返回非 NULL 值,它将返回这些列中的默认值。

当我们执行上面的查询时,它会生成以下输出。

Teradata CASE & COALESCE

NULLIF

如果参数相等,则 NULLIF 语句返回 NULL。

语法

以下是 NULLIF 语句的语法。

示例

以下示例在 Mobile_No 等于 0 时返回 NULL。否则,它将返回 Mobile_No 值。

上面的查询返回以下记录。我们可以看到 Roll_No 101 和 104 的 Mobile 列为 NULL。

Teradata CASE & COALESCE
下一个主题Teradata 主索引