错误:意外符号'%':JPQL - LIKE %FUNCTION(:namedParam)%

4
在使用JPQL查询时,我遇到了意外的令牌“%”。在我的情况下,我使用了upper函数,但它也可能是其他函数。
@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE %UPPER(:asunto)% ")
public Entity namedMethod(@Param("asunto") String asunto));

我需要添加 LIKE %:param% 以查找文本中参数的任何相似之处。

已尝试:

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE '%'UPPER(:asunto)'%' ")

意外的标记:UPPER

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE '%UPPER(:asunto)%' ")

意外的令牌:UPPER

那里也没有运气。

提前致谢。


2
JPQL Concat运算符 - M. Prokhorov
就是这样,谢谢 @M.Prokhorov! - UHDante
可能是JPQL Like Case Insensitive的重复问题。 - lcnicolau
1个回答

5

问题已解决,有两种方法可解决此问题:

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE '%' || UPPER(:asunto) || '%' ")

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE CONCAT('%', CONCAT(UPPER(:asunto),'%')) ")
EDIT-- Thanks to @Nicolau: 
@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE UPPER(CONCAT('%',:asunto,'%'))")

两者都可以使用!

感谢 @M.Prokhorov。


1
更简单的写法:@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE UPPER(CONCAT('%',:asunto,'%'))") - lcnicolau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接