无法在本机查询 spring 引导中使用 "LIKE"
cant using "LIKE" in native query spring boot
我尝试通过查询获取用户订单:
@Query(value = "SELECT * FROM ORDERS WHERE USER_ID = ?1 AND CAST(CREATE_AT AS NVARCHAR(100)) LIKE ?2 OR CAST(GRAND_TOTAL AS NVARCHAR(100)) LIKE ?2 OR CAST(STATUS AS NVARCHAR(100)) LIKE ?2" , nativeQuery = true)
Page<Order> getOrdersByUserSearch(int userID, String searchS, Pageable pageable);
但它总是 return 空列表。我 运行 此代码在 SQL 服务器中并且有效 (?1 =2. ?2 = '2021-06-26')。
如果我尝试更改“不喜欢”而不是“喜欢”它 运行。
我不想使用查询(非本机)、命名查询或规范方法,因为它会出现更多错误。
有什么建议吗?
SQL like
查询需要 %
以及匹配值。在查询中 ordered parameters
的情况下,我们可以使用:
@Query("SELECT m FROM Movie m WHERE m.rating LIKE ?1%")
List<Movie> searchByRatingStartsWith(String rating);
点击here了解更多信息。
在您的情况下,查询字符串应如下所示:
SELECT * FROM ORDERS WHERE USER_ID = ?1 AND CAST(CREATE_AT AS NVARCHAR(100)) LIKE %?2% OR CAST(GRAND_TOTAL AS NVARCHAR(100)) LIKE %?2% OR CAST(STATUS AS NVARCHAR(100)) LIKE %?2%
我尝试通过查询获取用户订单:
@Query(value = "SELECT * FROM ORDERS WHERE USER_ID = ?1 AND CAST(CREATE_AT AS NVARCHAR(100)) LIKE ?2 OR CAST(GRAND_TOTAL AS NVARCHAR(100)) LIKE ?2 OR CAST(STATUS AS NVARCHAR(100)) LIKE ?2" , nativeQuery = true)
Page<Order> getOrdersByUserSearch(int userID, String searchS, Pageable pageable);
但它总是 return 空列表。我 运行 此代码在 SQL 服务器中并且有效 (?1 =2. ?2 = '2021-06-26')。 如果我尝试更改“不喜欢”而不是“喜欢”它 运行。 我不想使用查询(非本机)、命名查询或规范方法,因为它会出现更多错误。 有什么建议吗?
SQL like
查询需要 %
以及匹配值。在查询中 ordered parameters
的情况下,我们可以使用:
@Query("SELECT m FROM Movie m WHERE m.rating LIKE ?1%")
List<Movie> searchByRatingStartsWith(String rating);
点击here了解更多信息。
在您的情况下,查询字符串应如下所示:
SELECT * FROM ORDERS WHERE USER_ID = ?1 AND CAST(CREATE_AT AS NVARCHAR(100)) LIKE %?2% OR CAST(GRAND_TOTAL AS NVARCHAR(100)) LIKE %?2% OR CAST(STATUS AS NVARCHAR(100)) LIKE %?2%