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,而不是返回错误。