当前位置:   article > 正文

Caused by: org.postgresql.util.PSQLException: ERROR: function nvl(numeric, integer) does not exist_no function matches the given name and argument ty

no function matches the given name and argument types. you might need to add
Java资深小白,不足之处,或者有任何错误欢迎指出。	--蓝紫
  • 1

报错日志如下,建议:No function matches the given name and argument types. You might need to add explicit type casts.
在这里插入图片描述
非常明显,报错说nvl函数不存在,nvl()是oracle中一个空值转换函数。用法结合如下代码解释就是,此处的is_read 字段读出的值为null时就赋值为0。
在这里插入图片描述
因为项目数据库迁移,DB换成PgSQL,才导致了函数不支持,后来使用了COALESCE()替换就解决啦。

常用空值转换函数

  • NVL(ex1,ex2)
    只支持oracle,如果ex1为空,就赋值为ex2。后来在此基础上, 又新加了NVL2(ex1,ex2,ex3)函数,表示如果ex1为空,就赋值为ex3,否则就赋值为ex2,这有点类似三目运算了。
  • COALESCE(ex1,ex2,…exN)
    oracle、pgsql、mysql都支持,与nvl()不同的是,此函数支持多表达式,有更多的扩展性和灵活性。
  • NULLIF(ex1,ex2)
    oracle、pgsql、mysql都支持,亲测有效。
    在这里插入图片描述
    pqsql测试如下:
    在这里插入图片描述
  • ISNULL(ex1,ex2)
    只支持mysql。
    `(∩_∩)′晚风依旧很温柔,一个人慢慢走
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/974715
推荐阅读
相关标签
  

闽ICP备14008679号