Oracle的NVL函数
Oracle的NVL函数是一个常用的空值处理函数,主要用于在查询结果中将NULL值替换为指定的默认值。以下是关于NVL函数的详细说明:
-
基本语法
NVL(expr1, expr2)
- 如果expr1为NULL,则返回expr2
- 如果expr1不为NULL,则返回expr1本身
-
数据类型要求
- 两个参数可以是任意数据类型,但必须兼容(Oracle会尝试隐式转换)
- 若expr1为字符类型,expr2会被转换为expr1的字符集
-
典型应用场景
- 计算字段时处理NULL值,例如:
NVL(comm, 0)
将佣金NULL值替换为0参与薪资计算 - 拼接字符串时避免NULL影响结果
- 计算字段时处理NULL值,例如:
-
扩展函数NVL2
Oracle还提供了增强版NVL2(expr1, expr2, expr3)
:- expr1非NULL时返回expr2
- expr1为NULL时返回expr3
示例:
SELECT ename, NVL(comm, 0) AS commission FROM emp; -- 将NULL佣金显示为0
SELECT NVL2(job_id, 'Has Job', 'No Job') FROM employees; -- 条件返回值