项目场景:
通过后端JAVA取数获取待处理的列值为Null或空字符串''的数据,处理后更新此列一个Guid
必须!!!兼容多种数据库!!!
必须!!!兼容多种数据库!!!
必须!!!兼容多种数据库!!!
问题描述
开发环境为PgSQL,查询取数等后续操作都没问题,但是部署到ORACLE环境后,突然提示取不到数,经调试后发现该问题,于此记录下
后端取数时利用JPA查询,用自带的函数COALESCE()查。
@Query(value="SELECT record FROM Record record" +
" WHERE COALESCE(record.aurid,'') = ''")
List<Record> getAllDealRecord();
原因分析:
下图是两个不同数据库环境对比图,总结下就是NVL函数取代值为’'空字符串时,无法查询到Null值,除非给一个绝不出现的值。
解决方案:
字段 is null or 字段 = ‘’
@Query(value="SELECT record FROM Record record" +
" WHERE record.aurid is null or record.aurid = ''")
List<Record> getAllDealRecord();