首页 > 解决方案 > 在条件下将字符串或整数数组转换为逗号分隔的整数或字符串

问题描述

  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

标签: javasqlpostgresql

解决方案


在调用 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'

推荐阅读