使用 Oracle 数据库处理 JPQL 中的空字符串
Handling empty strings in JPQL with an Oracle database
我正在尝试编写可在 Oracle、MySQL 或 SQL 服务器上运行的 JPQL 查询。它应该找到字符串字段不为空或 null 的所有项目。在 MySQL、
select x from Examples x where (x.foo != '' and x.foo IS NOT null)
工作正常。但是,由于 Oracle 将空字符串转换为 null 的方式,!= '' 位总是 returns 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 中。有人找到解决办法了吗?
这是一个有点脏的解决方案,而不是:
x.foo != ''
您可以使用:
length(x.foo || ' ') > 1
我正在尝试编写可在 Oracle、MySQL 或 SQL 服务器上运行的 JPQL 查询。它应该找到字符串字段不为空或 null 的所有项目。在 MySQL、
select x from Examples x where (x.foo != '' and x.foo IS NOT null)
工作正常。但是,由于 Oracle 将空字符串转换为 null 的方式,!= '' 位总是 returns 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 中。有人找到解决办法了吗?
这是一个有点脏的解决方案,而不是:
x.foo != ''
您可以使用:
length(x.foo || ' ') > 1