我正在尝试编写一个可以在Oracle、MySQL或SQL Server上工作的JPQL查询。它应该查找字符串字段不为空或非空的所有项。在MySQL上,
select x from Examples x where (x.foo != '' and x.foo IS NOT null)工作正常。但是,由于Oracle将空字符串转换为null的方式,!= '‘位总是返回false,因此即使几乎所有字符串都为空,我也得不到任何结果。我可以检测用户正在使用的数据库类型,并为每个数据库编写不同的内容,但是拥有三倍于JPQL的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中。有人找到解决这个问题的办法了吗?
发布于 2017-06-29 23:24:56
这是一个有点脏的解决方案,但不是:
x.foo != ''您可以使用:
length(x.foo || ' ') > 1https://stackoverflow.com/questions/44828002
复制相似问题