【问题标题】:Error Unexpected token '%' : JPQL - LIKE %FUNCTION(:namedParam)%错误意外令牌“%”:JPQL - LIKE %FUNCTION(:namedParam)%
【发布时间】:2018-08-02 05:30:34
【问题描述】:

使用此 JPQL 查询时,我得到 Unexpected token '%':在我的例子中,我使用了 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

那里也没有运气。

提前致谢。

【问题讨论】:

标签: java jpa spring-data-jpa jpql


【解决方案1】:

已解决,有两种方法可以解决这个问题:

@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。

【讨论】:

  • 更简单:@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE UPPER(CONCAT('%',:asunto,'%'))")
猜你喜欢
  • 2019-05-14
  • 1970-01-01
  • 2014-08-20
  • 2011-12-20
  • 2015-11-19
  • 2018-08-27
  • 2014-12-07
  • 2016-08-10
  • 2013-02-11
相关资源
最近更新 更多