NVL
📄字数 470
👁️阅读量 加载中...
功能描述
判断 expr1
是否为 NULL
,如果为 NULL
则返回 expr2
,否则返回 expr1
。功能同IFNULL。
语法格式
sql
NVL(expr1,expr2)
输入参数
expr1
:数据库支持的所有数据类型。expr2
:数据库支持的所有数据类型。
注意
expr1
和 expr2
需要存在公共数据类型,否则执行报错
输出结果
返回值的数据类型根据 expr1
和 expr2
的数据类型推导确定,具体规则如下:
- 若
expr1
和expr2
的数据类型相同,则返回该数据类型; - 若数据类型不同,则返回两者的 公共数据类型,即可以同时兼容两者的目标类型。通常遵循以下转换原则:
- 数值类型中,将精度较低的类型提升为精度较高的类型
(如:INTEGER + NUMERIC → NUMERIC)
; - 字符串与其他类型混用时,优先转换为字符串类型;
- 日期/时间类型之间选择精度更高的
(如:DATE 与 TIMESTAMP → TIMESTAMP)
; - 若无法隐式转换,函数会报错。
- 数值类型中,将精度较低的类型提升为精度较高的类型
示例
sql
-- 根据第一个参数是否为空,返回相应值
SQL> SELECT NVL(NULL, '默认值') , NVL('实际值', '默认值') FROM dual;
+--------+--------+
| EXPR1 | EXPR2 |
+--------+--------+
| 默认值 | 实际值 |
+--------+--------+