Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Oracle数据库处理JPQL中的空字符串_Java_Oracle_Jpql - Fatal编程技术网

Java 使用Oracle数据库处理JPQL中的空字符串

Java 使用Oracle数据库处理JPQL中的空字符串,java,oracle,jpql,Java,Oracle,Jpql,我正在尝试编写一个可以在Oracle、MySQL或SQL Server上运行的JPQL查询。它应该查找字符串字段不为空或null的所有项。在MySQL上 select x from Examples x where (x.foo != '' and x.foo IS NOT null) 很好。但是,由于Oracle将空字符串转换为null的方式,因此!=''位总是返回false,所以即使几乎没有任何字符串为空,也不会得到任何结果。我可以检测出用户使用的是哪种数据库,并为每种数据库编写不同的内容

我正在尝试编写一个可以在Oracle、MySQL或SQL Server上运行的JPQL查询。它应该查找字符串字段不为空或null的所有项。在MySQL上

select x from Examples x where (x.foo != '' and x.foo IS NOT null)
很好。但是,由于Oracle将空字符串转换为null的方式,因此!=''位总是返回false,所以即使几乎没有任何字符串为空,也不会得到任何结果。我可以检测出用户使用的是哪种数据库,并为每种数据库编写不同的内容,但拥有三倍于JPQL的内容并不是很好。在JPQL中有没有处理空字符串的方法也适用于Oracle

我可以找到很多相关的问题,比如:


但是,对于如何处理它,特别是在JPQL中,没有什么真正需要做的。有人找到了解决方法吗?

这是一个有点脏的解决方案,但不是:

x.foo != ''
您可以使用:

length(x.foo || ' ') > 1

为什么不使用一个变量,让JPA来处理呢?类似于
。。。。x、 福!=:清空字符串…
query.setParameter(“清空字符串”),这是一个有趣的想法,托马斯,我想这不会有什么不同,但现在你提到了,它看起来确实值得一试。谢谢,恐怕没用。不过还是谢谢你。