包含忽略大小写的JPA存储库查询

时间:2016-03-29 18:56:05

标签: sql hibernate jpa spring-data

我正在使用Spring JPA编写一个select查询。我传入参数来与数据库中的条目进行比较。当我尝试将UPPER()与contains(%value%)组合时,我遇到问题(没有编译)。例如。 %UPPER(值)%

where ... AND (UPPER(l.name1) LIKE %UPPER(:search1)% OR UPPER(l.name2) LIKE %UPPER(:search2)% OR UPPER(l.name3) LIKE %UPPER(:search3)%

search1,search2和search3是从我的服务实现传入的参数。在查询中是否有不同的方法来获取包含忽略大小写的逻辑?还是我错过了一些小事?我试过找到例子,但找不到与这种情况直接相关的例子。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

首先,您不应该使用UPPER包装SQL函数(%),而应该包含文字值。

在任何情况下,都可以使用CONCAT函数克服您的问题:

...AND (UPPER(l.name1) LIKE CONCAT('%', CONCAT(UPPER(:search1), '%'))...

另外,请注意您有一个额外的左括号。您可能需要在)

之后添加额外的LIKE %UPPER(:search3)%

Parameter in like clause JPQL启发