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