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会先尝试转换成数字, 如果无法转换成数字则会报错, 能转换成功则会正常运行

oracle函数nvl, nvl2, nullif

oracle函数nvl, nvl2, nullif

oracle函数nvl, nvl2, nullif

oracle函数nvl, nvl2, nullif

而NVL2中没有此限制

 

NULLIF(表达式1, 表达式2)

语法: NULLIF(表达式1, 表达式2)

select nullif('a', 'b') from dual

如果表达式1与表达式2相等, 则返回空, 不相等则返回表达式2, 其中表达式1和表达式2也必须为同一类型

相关文章:

  • 2022-02-28
  • 2022-12-23
  • 2021-10-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-11
  • 2021-09-24
  • 2022-03-01
  • 2022-12-23
  • 2022-12-23
  • 2022-02-22
相关资源
相似解决方案