【发布时间】:2022-11-16 21:07:44
【问题描述】:
我正在尝试学习 SQL 并找出一种方法来检索名称以列表中的一个字符结尾的所有列(使用 JDBC 查询):
public Map<Long, Set<Long>> groupCountriesBy(Set<Integer> countryIdLastDigits) {
String query = "SELECT c.id FROM countries c"
+ " WHERE c.name LIKE '%[dea]'"
+ " GROUP BY c.name ";
var args = new MapSqlParameterSource("countryIdLastDigits", countryIdLastDigits);
....
}
WHERE c.name LIKE '%[dea]' 确实返回所有以 d、e 或 a 结尾的列,但我没有设法找到将 countryIdLastDigits 传递给此 SQL 查询的方法。
你能和我分享一些指示/提示吗?可能我缺少一些 SQL 概念/命令。
【问题讨论】:
-
你的底层数据库是什么?您可能需要为此提供正则表达式支持。但是 SQL Server 可以使用
LIKE来处理这个问题。 -
您使用的是哪个数据库管理系统?标准 LIKE 没有正则表达式功能。
-
尝试使用正则表达式
-
我在 Postgres 上。
标签: sql postgresql jdbc