我有一个String[]
数组
String[] name = {"amit", "rahul", "surya"};
我想在SQL查询中将名称作为参数发送到IN子句内,那么如何转换成格式?
'amit','rahul','surya'
我有一个String[]
数组
String[] name = {"amit", "rahul", "surya"};
我想在SQL查询中将名称作为参数发送到IN子句内,那么如何转换成格式?
'amit','rahul','surya'
String joined = String.join(",", name);
StringUtils.join(names, ',');
- insanityString list = "'" + StringUtils.join(names,"','") + "'";
这段代码可以为 SQL 请求提供所需的单引号。其中,names
是需要拼接的字符串列表。 - haysclarkTextUtils.join(",", stringArrayOfEmails)
- Pratik ButaniAndroid开发者可能正在寻找TextUtils.join。
Android文档:http://developer.android.com/reference/android/text/TextUtils.html
代码:
String[] name = {"amit", "rahul", "surya"};
TextUtils.join(",",name)
简单易懂:但需要Java8!
String result = String.join(",", names);
StringBuilder sb = new StringBuilder();
for (String n : name) {
if (sb.length() > 0) sb.append(',');
sb.append("'").append(n).append("'");
}
return sb.toString();
TextUtils.join(...)
吗?我猜一行代码甚至比五行更好更简单。 - Eugene Brusovif (name.length > 0) {
StringBuilder nameBuilder = new StringBuilder();
for (String n : name) {
nameBuilder.append("'").append(n.replace("'", "\\'")).append("',");
// can also do the following
// nameBuilder.append("'").append(n.replace("'", "''")).append("',");
}
nameBuilder.deleteCharAt(nameBuilder.length() - 1);
return nameBuilder.toString();
} else {
return "";
}
replaceAll
调用没有任何作用。即使你将名称设置为新字符串,它仍然不会有任何作用,因为 \'
是 '
的转义序列。 - user1181445String.join(...)
或 TextUtils.join(...)
呢? - Eugene Brusov您还可以使用 org.apache.commons.lang.StringUtils
API 将Java中的字符串数组组成逗号分隔的结果。
StringUtils.join(strArr,",");
org.springframework.util.StringUtils.arrayToCommaDelimitedString(String[] array)
String[] name = {"amit", "rahul", "surya"};
String str = "'" + Joiner.on(",").skipNulls().join(name)
.replace(",", "','") + "'";
Java 8之前的解决方案扩展
String result = String.join(",", name);
StringJoiner joiner = new StringJoiner(",");
for (CharSequence cs: name) {
joiner.add("'" + cs + "'");
}
return joiner.toString();
或者简单方法概念
public static String genInValues(String delimiter, String prefix, String suffix, String[] name) {
StringJoiner joiner = new StringJoiner(delimiter);
for (CharSequence cs: name) {
joiner.add(prefix + cs + suffix);
}
return joiner.toString();
}
例如
For Oracle i need "id in (1,2,3,4,5)"
then use genInValues(",", "", "", name);
But for Postgres i need "id in (values (1),(2),(3),(4),(5))"
then use genInValues(",", "(", ")", name);
StringBuilder
并迭代遍历您的String[],将每个String附加到其中:public static String convert(String[] name) {
StringBuilder sb = new StringBuilder();
for (String st : name) {
sb.append('\'').append(st).append('\'').append(',');
}
if (name.length != 0) sb.deleteCharAt(sb.length()-1);
return sb.toString();
}
String[] name = {"O'Neill"};
意思是定义了一个字符串数组,其中只有一个元素,该元素的值为 "O'Neill"。 - Bart Kiers