【问题标题】:How to retrieve columns that end with one of characters in a list如何检索以列表中的一个字符结尾的列
【发布时间】: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


【解决方案1】:

大多数 SQL 方言都有剩下正确的字符串函数所以也许是这样的

where right(col,1) in ('d', 'e', 'a')

将是你所需要的。

【讨论】:

  • 非常感谢@Stu。这确实很有帮助。
猜你喜欢
  • 2013-08-23
  • 2020-08-27
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多