我正在使用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是从我的服务实现传入的参数。在查询中是否有不同的方法来获取包含忽略大小写的逻辑?还是我错过了一些小事?我试过找到例子,但找不到与这种情况直接相关的例子。
提前感谢您的帮助!
答案 0 :(得分:1)
首先,您不应该使用UPPER
包装SQL函数(%
),而应该包含文字值。
在任何情况下,都可以使用CONCAT
函数克服您的问题:
...AND (UPPER(l.name1) LIKE CONCAT('%', CONCAT(UPPER(:search1), '%'))...
另外,请注意您有一个额外的左括号。您可能需要在)
LIKE %UPPER(:search3)%