java - 将字符串或整数数组转换为逗号分隔的整数或条件中的 sql 字符串

标签 java sql postgresql

  public List<String> getCategory(final String logicalUnitCode, final String logicalUnitIdent, final String keyword) {
        return entityManager
                .createNativeQuery(
                        "select name from " + logicalUnitCode + " where " + keyword + "::text in(" + logicalUnitIdent + "::text)")
                .getResultList();
    }

在某些情况下,关键字是 int8,logicalUnitIdent 是整数字符串,例如:("1,2,3,4,5"),在某些情况下,关键字是 varchar,logicalUnitIdent 是字符串 (("test,test1, test2")。我想对这两种情况都使用一个查询。任何建议我如何实现它,这可能吗?将两者都转换为文本或 varchar?我正在使用 postgres

最佳答案

在调用 getCategory() 之前,您创建 logicalUnitIdent String 并传递。但是将查询修改为 "in("+logicalUnitIdent+")"

logicalUnitIdent 应该是 "1,2,3"或 "'string1','string2','string3' 要将字符串列表转换为单引号和逗号分隔的字符串,请使用以下代码

在 JDK 8 或更高版本中使用这个

List<String> stringList = new ArrayList<String>(Arrays.asList("string1","string2","string3"));
        String list= String.join(",", stringList
                .stream()
                .map(name -> ("'" + name + "'"))
                .collect(Collectors.toList()));

System.out.println(list); // prints 'string1','string2','string3'

关于java - 将字符串或整数数组转换为逗号分隔的整数或条件中的 sql 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57749519/

相关文章:

php - 如何比较高度值

sql - 左外连接的作用类似于内连接

PostgreSQL:循环直到条件为真

mysql - 多个连接的奇怪 SQL 问题

python - Odoo8 Postgres 错误

java - 如何从 web 表访问特定行

java - Wicket:<body> 中模板化的 javascript?

java - OpenSSL 始终无法验证 Java 中 Bouncy CaSTLe 生成的签名

java - 获得正确的接口(interface)粒度级别

php - FuelPHP - 关系表中的多对多和字段?