ZEROIFNULL

如果列为 NULL,则计算为 0。

语法

ZEROIFNULL(expression)

参数

表达式
用于 NULL 值求值的字符串,以下数据类型之一:
  • INTEGER

  • DOUBLE PRECISION

  • INTERVAL

  • NUMERIC

示例

以下查询从表 test_results 返回 5 名学生的得分,其中 L. White 的 Score 设置为 0,S. Robinson 和 K. Johnson 设置为 NULL:

=> SELECT Name, Score FROM test_results;
    Name     | Score
-------------+-------
 J. Doe      |   100
 R. Smith    |    87
 L. White    |     0
 S. Robinson |
 K. Johnson  |
(5 rows)

下一项查询对列 Score 调用 ZEROIFNULL,因此 Vertica 为 S. Robinson 和 K. Johnson 返回 0:

=> SELECT Name, ZEROIFNULL (Score) FROM test_results;
    Name     | ZEROIFNULL
-------------+------------
 J. Doe      |        100
 R. Smith    |         87
 L. White    |          0
 S. Robinson |          0
 K. Johnson  |          0
(5 rows)

您还可以在 PARTITION BY expressions 中使用 ZEROIFNULL,必须始终解析为非空值。例如:

CREATE TABLE t1 (a int, b int) PARTITION BY (ZEROIFNULL(a));
CREATE TABLE

Vertica 在对表t1 进行分区时调用此函数,通常是在加载操作期间执行。加载期间,函数会检查 PARTITION BY 表达式(在本例中为列 a)的数据是否存在 NULL 值。如果在给定行中遇到 NULL 值,则将分区键设置为 0,而不是返回错误。