我正在尝试Java流读取字符串列表,将列表拆分为如下所示的格式例如:这是在我的输入字符串-中
[APPLE, MANGO]
我正在尝试将上述数据转换为这种格式
('APPLE', 'MANGO')
尝试使用java流进行转换,使用以下代码
String.join(",", list.stream().map(item -> "'"+item+"'").collect(Collectors.toList()));
我得到的输出低于
('APPLE, MANGO')
但我期待着像一样
('APPLE', 'MANGO')
有人能纠正我的java代码以获得以上所需的格式吗?
此问题的上下文是
尝试创建类似的SQL查询
从TEST_TABLE中选择*,其中ID IN('APPLE','MANGO'((
其中,as IN STRUCTION参数是ArrayList<String>();
但用我的代码,我得到了
Select * from TEST_TABLE where ID IN ('APPLE, MANGO'))
IN子句格式不正确,缺少'
尝试以下操作:
List<String> list = List.of("APPLE", "MANGO");
String sql = "Select * from TEST_TABLE where ID IN";
String params = list.stream().map(s -> "'" + s + "'")
.collect(Collectors.joining(",", "(", ")"));
sql = sql + params;
System.out.println(sql);
我不知道你预期输出中的第二个右大括号是打字错误还是正确的。如果你需要第二个大括号,就在上面加上它。
也许你可以做一些类似的事情:
String.format("(%s)", list.stream().map(s -> String.format("'%s'", s)).collect(Collectors.joining(",")));
编辑:
String.format("%s)", list.stream().map(s -> String.format("'%s'", s)).collect(Collectors.joining(",")));
编辑另一时间:
有了这些额外的信息,这就是你需要的:
String query = "Select * from TEST_TABLE where ID IN (%s)"
query = String.format(query, list.stream().map(s -> String.format("'%s'", s)).collect(Collectors.joining(",")));
System.out.println(query);