java - 在条件下将字符串或整数数组转换为逗号分隔的整数或字符串
问题描述
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'
推荐阅读
- r - 行绑定或注释数据框,基于在列上使用之间的匹配
- spring-boot - 是否有可能从 react-native apk 访问 http 微服务?
- node.js - 如何从node js中的passportjs验证器获取数据?
- sql-server - 如何使我的日期格式如下连接 Mmm-YY SQL Server
- r - 简单的“[]”条件
- uitableview - 将 NSDiffableDataSourceSnapshot 应用于 UITableViewDiffableDataSource 导致“NSInternalInconsistencyException”
- r - 如何通过两个不同的变量创建新列?
- c++ - 无法在 mint 20.1 上编译:stdlib.h:没有这样的文件或目录
- tfs - 我们是否需要定期重启 TFS 服务
- c# - 开闭原则 c#