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/