1.NVL2 函数用法
语法:NVL2(expr1, expr2, expr3)
说明:如果 expr1(表达式1)不是 null 值,则 NVL2 函数返回 expr2(表达式2),否则就返回 expr3(表达式3)。
2.NVL2 函数注意事项
expr2(表达式2)和 expr3(表达式3)不能是 LONG 数据类型。
由于 LONG 类型的特殊性,通常不建议将其作为 NVL2 函数的参数或返回值类型。如果确实需要处理大型文本数据,建议使用 CLOB 类型。
3.隐式转换规则
-
若 expr2(表达式2)是字符数据,则 Oracle 数据库在比较之前就会把 expr3(表达式3)(expr3 不为 null)转换成 expr2(表达式2)的数据类型并且返回 VARCHAR2 数据类型到 expr2(表达式2)的字符集。
-
若 expr2(表达式2)是数值型,则 Oracle 数据库决定哪个参数具有最高数值优先级,并把另一个参数的数据类型隐式转换成这种数据类型,并返回这种数据类型的数据。
4.NVL2 函数使用示例
问题:查询员工收入,员工收入(income)由工资(salary)加奖金(commission_pct)组成,若该员工没有奖金(commission_pct)则 commission_pct 列为 null。
答案:
结果: