NVL
函数从两个表达式返回一个非 NULL
值。如果 expr1
与 expr2
的结果皆为 NULL
值,则 NVL
函数返回 NULL
。
NVL(expr1, expr2)
参数 | 说明 |
---|---|
expr1 | 表达式。数据类型可以是 OceanBase 内建数据类型 中的任何数据类型。 |
expr2 | 表达式。数据类型可以是 OceanBase 内建数据类型中的任何数据类型。 |
expr1
和 expr2
必须是相同类型,或者可以隐式转换为相同类型。如果它们不能隐式转换,则 OceanBase 返回错误。隐式转换实现如下:
如果 expr1
是 CHAR
、NCHAR
、NVARCHAR
、VARCHAR2
或 VARCHAR
字符型数据,则 OceanBase 在比较 expr1
之前将 expr2
转换为 expr1
的数据类型,并返回 expr1
字符集的 VARCHAR2
。
如果 expr1
是 NUMBER
、FLOAT
、BINARY_FLOAT
或 BINARY_DOUBLE
数值型数据,则 OceanBase 确定哪个参数具有最高的数字优先级,隐式地将另一个参数转换为该数据类型,并返回该数据类型。
如果 expr1
、expr2
是 NULL
,则返回 NULL
。如果 expr1
是 CHAR
、NCHAR
、NVARCHAR
、VARCHAR2
或 VARCHAR
字符型数据,则返回 expr1
字符集的 VARCHAR2
。如果 expr1
是 NUMBER
、FLOAT
、BINARY_FLOAT
或 BINARY_DOUBLE
数值型数据,则返回 expr1
中具有最高数字优先级的数据类型。
假设有一张表 EMPLOYEES,给员工姓名列 name 和佣金列 commission_pct 里面插入数据,执行以下语句:
CREATE TABLE EMPLOYEES (name VARCHAR(20),commission_pct float(5));
INSERT INTO EMPLOYEEs VALUES ('Baer', null);
INSERT INTO EMPLOYEEs VALUES ('Bada', null);
INSERT INTO EMPLOYEEs VALUES ('Boll', 0.1);
INSERT INTO EMPLOYEEs VALUES ('Bates', 0.15);
INSERT INTO EMPLOYEEs VALUES ('Eric', null);
查询员工的姓名和佣金,如果员工没有收到佣金,则显示 Not Applicable。执行以下语句:
SELECT name, NVL(TO_CHAR(commission_pct), 'Not Applicable') commission
FROM employees WHERE name LIKE 'B%' ORDER BY name;
查询结果如下:
+--------------+----------------+
| NAME | COMMISSION |
+--------------+----------------+
| Baer | Not Applicable |
+--------------+----------------+
| Bada | Not Applicable |
+--------------+----------------+
| Boll | .1 |
+--------------+----------------+
| Bates | .15 |
+--------------+----------------+
备案信息: 粤ICP备15087711号-2
Copyright © 2008-2024 啊嘎哇在线工具箱 All Rights.
本站所有资料来源于网络,版权归原作者所有,仅作学习交流使用,如不慎侵犯了您的权利,请联系我们。