我正在尝试编写一个可以在Oracle,MySQL或SQL Server上运行的JPQL查询。它应该找到字符串字段不为空或为空的所有项目。在MySQL上,
select x from Examples x where (x.foo != '' and x.foo IS NOT null)
工作正常。但是,由于Oracle将空字符串转换为null的方式,所以!='' bit总是返回false,所以即使几乎没有任何字符串为空,我也没有结果。我可以检测到用户正在使用哪种类型的数据库,并为每种数据库写一个不同的东西,但是拥有三倍于JPQL的数据并不是很好。有没有办法在JPQL中处理空字符串也适用于Oracle?
我可以找到很多相关的问题,例如:
null vs empty string in Oracle
Why does Oracle 9i treat an empty string as NULL?
https://dba.stackexchange.com/questions/49744/oracle-empty-string-converts-to-null
但没有真正关于如何处理它,尤其是在JPQL中。有人找到了解决这个问题的方法吗?
答案 0 :(得分:0)
这有点脏,但不是:
x.foo != ''
你可以使用:
length(x.foo || ' ') > 1