- 类别:
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 |
+-------------+---------------+----------------+----------------+------------------+------------------+