当您在查询中希望用一个具体的值来代替NULL值时,MaxCompute支持使用NVL函数将NULL值替换为指定的值,确保在执行数据分析或生成报告时,结果中不会有意外的空值。本文为您介绍在MaxCompute中NVL函数的使用。

命令格式

nvl(T <value>, T <default_value>)

参数说明

  • value:必填。输入参数。T指代输入数据类型,可以是MaxCompute支持的所有数据类型。

  • default_value:必填。替换后的值。必须与value的数据类型保持一致。

返回值说明

如果value值为NULL,返回default_value,否则返回value,函数的两个参数的数据类型必须一致。

示例数据

为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表nvl_test,并添加数据,命令示例如下:

CREATE TABLE nvl_test (
  c1 string,
  c2 bigint, 
  c3 datetime);
  
 --插入数据
 INSERT INTO nvl_test VALUES 
 	('aaa',23,'2024-01-11 00:00:00'),
  ('bbb',NULL,'2024-01-12 08:00:00'),
  (NULL,20,'2024-01-13 05:00:00'),
  ('ddd',25,NULL);

使用示例

将nvl_test表c1列中为NULL的值输出为00000c2中为NULL的值输出为0c3中为NULL的值输出为-,命令示例如下:

SELECT nvl(c1,'00000'),nvl(c2,0),nvl(c3,'-') FROM nvl_test;

--示例返回结果如下
+-----+------------+-----+
| _c0 | _c1        | _c2 |
+-----+------------+-----+
| aaa | 23         | 2024-01-11 00:00:00 |
| bbb | 0          | 2024-01-12 08:00:00 |
| 00000 | 20         | 2024-01-13 05:00:00 |
| ddd | 25         | -   |
+-----+------------+-----+

相关函数

NVL函数属于其他函数,更多其他业务场景的函数请参见其他函数