【发布时间】:2021-11-11 10:21:11
【问题描述】:
我有以下疑问:
@Query("SELECT d FROM CarportLocationEntityView d WHERE d.externalId LIKE %:filterCriteria% OR lower(d.carportName) LIKE lower(concat('%',:filterCriteria,'%')) ")
List<CarportLocationEntityView> filterCarportList(@Param("filterCriteria") String filterCriteria);
此查询搜索数据库中的两列:
- externalId
- 车棚名
两列都是字符串类型,其中在 externalId 中始终将数字指定为字符串。如果我应用查询并输入 carportName 的一部分,那么我会得到正确的结果。 但是,如果我过滤一个 externalId 并在参数中只输入一部分 externalId,那么我将得不到任何数据。
例如:localhost:8080/filter?filterCriteria=100 在这里我没有得到任何数据。
但如果我过滤整个 externalId 本地主机:8080/filter?filterCriteria=1000000 然后我得到匹配的数据集。
为什么查询中的 % 运算符不适用于包含数字的字符串?
【问题讨论】:
-
不幸的是不是真的。这个问题是关于实际的 SQL 查询。我正在使用 JPA 查询。但是感谢您的帮助
-
和JPA一样
-
所以我尝试了解决方案,但它们不起作用。 >= 或 concate 或 strval 都不是。我的问题与这个问题的区别在于我有一个字符串字段,我在其中输入数字而不是数字字段。
-
你将如何编写 SQL?
标签: spring-boot jpa