- 类别:
 
NVL¶
如果 expr1 是 NULL,则返回 expr2,否则返回 expr1。
- 别名:
 
语法¶
NVL( <expr1> , <expr2> )
实参¶
expr1通用表达式。
expr2通用表达式。
使用说明¶
排序规则详细信息¶
The collation specifications of all input arguments must be compatible.
The collation of the result of the function is the highest-precedence collation of the inputs.
返回¶
返回所返回表达式的数据类型。
如果两个表达式都是 NULL,则返回 NULL。
示例¶
创建一个包含供应商联系信息的表:
CREATE TABLE IF NOT EXISTS suppliers (
  supplier_id INT PRIMARY KEY,
  supplier_name VARCHAR(30),
  phone_region_1 VARCHAR(15),
  phone_region_2 VARCHAR(15));
该表包含两个不同区域的每个供应商的电话号码。对于一个区域,电话号码可以是 NULL。
在表中插入值:
INSERT INTO suppliers(supplier_id, supplier_name, phone_region_1, phone_region_2)
  VALUES(1, 'Company_ABC', NULL, '555-01111'),
        (2, 'Company_DEF', '555-01222', NULL),
        (3, 'Company_HIJ', '555-01333', '555-01444'),
        (4, 'Company_KLM', NULL, NULL);
下面的 SELECT 语句使用 NVL 函数检索 phone_region_1 和 phone_region_2 值。
此示例显示了 NVL 函数的以下结果:
IF_REGION_1_NULL列包含phone_region_1中的值,如果该值是 NULL,则包含phone_region_2中的值。IF_REGION_2_NULL列包含phone_region_2中的值,如果该值是 NULL,则包含phone_region_1中的值。如果
phone_region_1和phone_region_2都是 NULL,则函数返回 NULL。
SELECT supplier_id,
       supplier_name,
       phone_region_1,
       phone_region_2,
       NVL(phone_region_1, phone_region_2) IF_REGION_1_NULL,
       NVL(phone_region_2, phone_region_1) IF_REGION_2_NULL
  FROM suppliers
  ORDER BY supplier_id;
+-------------+---------------+----------------+----------------+------------------+------------------+
| SUPPLIER_ID | SUPPLIER_NAME | PHONE_REGION_1 | PHONE_REGION_2 | IF_REGION_1_NULL | IF_REGION_2_NULL |
|-------------+---------------+----------------+----------------+------------------+------------------|
|           1 | Company_ABC   | NULL           | 555-01111      | 555-01111        | 555-01111        |
|           2 | Company_DEF   | 555-01222      | NULL           | 555-01222        | 555-01222        |
|           3 | Company_HIJ   | 555-01333      | 555-01444      | 555-01333        | 555-01444        |
|           4 | Company_KLM   | NULL           | NULL           | NULL             | NULL             |
+-------------+---------------+----------------+----------------+------------------+------------------+