oracle中的动态“like”(spring)

swvgeqrz  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(285)

嗨,我试图使用一个参数在'喜欢'然而,当我调用的方法,它产生错误,我已经尝试了这些方法,都产生错误

@Query(value = "SELECT * FROM BOOK l WHERE l.NAME LIKE LIKE '%'||:search||'%'", nativeQuery = true)
List<BookEntity> findByParam(@Param("search") String search);

错误:ora-00936:缺少表达式

@Query(value = "SELECT * FROM BOOK l WHERE l.NAME LIKE %:search%", nativeQuery = true)
List<BookEntity> findByParam(@Param("search") String search);

错误:ora-00911:无效字符

@Query(value = "SELECT * FROM BOOK l WHERE l.NAME LIKE CONCAT(CONCAT('%',:search),'%'), nativeQuery = true) 
List<BookEntity> findByParam(@Param("search") String search);

错误:ora-00904:“charlie”:无效标识符
我会感激你的帮助

2izufjch

2izufjch1#

尝试直接将整个通配符表达式绑定到 :search 占位符

@Query(value = "SELECT * FROM BOOK l WHERE l.NAME LIKE :search", nativeQuery=true)
Collection<Book> findByName(@Param("search") String search);

在调用代码中,可以使用以下代码段:

String search = "%CHARLE%";
List<Book> books = yourJpaRepository.findByName(search);

相关问题