nvl函数
语法: NVL(表达式1, 表达式2)
select nvl(s.name, '未填写') from student s
如果表达式1的值为空, 则显示第二个值, 否则显示原来的值,
nvl2函数
语法: NVL2(表达式1, 表达式2, 表达式3)
select nvl(s.name, 'a', 'b') from student s
如果表达式1的值不为空, 显示表达式2, 为空的话显示表达式3
这两个函数还有一个重大的区别, NVL函数中表达式1和表达式2的值必须为同一类型,
但除去另外一种情况, 当传入的参数为字符串类型时, oracle会先尝试转换成数字, 如果无法转换成数字则会报错, 能转换成功则会正常运行
而NVL2中没有此限制
NULLIF(表达式1, 表达式2)
语法: NULLIF(表达式1, 表达式2)
select nullif('a', 'b') from dual
如果表达式1与表达式2相等, 则返回空, 不相等则返回表达式2, 其中表达式1和表达式2也必须为同一类型