NVL

返回列表中第一个非空表达式的值。

行为类型

不可变

语法

NVL ( expression1 , expression2 );

参数

  • 如果 expression1 为 NULL,则 NVL 返回 expression2。

  • 如果 expression1 不为 NULL,则 NVL 返回 expression1。

注意

  • COALESCE 为更标准、更通用的函数。

  • NVL 等同于 COALESCE,但 NVL 仅通过两个实参调用。

  • 实参可以包含 Vertica 支持的所有数据类型。

  • 实施等同于 CASE 表达式:

    CASE WHEN expression1 IS NULL THEN expression2
        ELSE expression1 END;
    

示例

expression1 不为 NULL,因此 NVL 返回 expression1:

SELECT NVL('fast', 'database');
nvl
------
 fast
(1 row)

expression1 为 NULL,因此 NVL 返回 expression2:

SELECT NVL(null, 'database');
nvl
----------
 database
(1 row)

expression2 为 NULL,因此 NVL 返回 expression1:

SELECT NVL('fast', null);
nvl
------
 fast
(1 row)

在以下示例中,expression1 (title) 包含 NULL,因此 NVL 返回 expression2 并将 "Withheld" 替换为未知值:

SELECT customer_name, NVL(title, 'Withheld') as title
FROM customer_dimension
ORDER BY title;
     customer_name      | title
------------------------+-------
 Alexander I. Lang      | Dr.
 Steve S. Harris        | Dr.
 Daniel R. King         | Dr.
 Luigi I. Sanchez       | Dr.
 Duncan U. Carcetti     | Dr.
 Meghan K. Li           | Dr.
 Laura B. Perkins       | Dr.
 Samantha V. Robinson   | Dr.
 Joseph P. Wilson       | Mr.
 Kevin R. Miller        | Mr.
 Lauren D. Nguyen       | Mrs.
 Emily E. Goldberg      | Mrs.
 Darlene K. Harris      | Ms.
 Meghan J. Farmer       | Ms.
 Bettercare             | Withheld
 Ameristar              | Withheld
 Initech                | Withheld
(17 rows)

另请参阅