Caused by: org.postgresql.util.PSQLException: ERROR: function nvl(numeric, integer) does not exist
Java资深小白,不足之处,或者有任何错误欢迎指出。--蓝紫报错日志如下,建议:No function matches the given name and argument types. You might need to add explicit type casts.非常明显,报错说nvl函数不存在,nvl()是oracle中一个空值转换函数。用法结合如下代码解释就是,此处的is_read
·
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。
`(∩_∩)′晚风依旧很温柔,一个人慢慢走
更多推荐
已为社区贡献3条内容
所有评论(0)