Java资深小白,不足之处,或者有任何错误欢迎指出。	--蓝紫

报错日志如下,建议: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。
    `(∩_∩)′晚风依旧很温柔,一个人慢慢走
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐