传递字符串数组值的sql IN条件
我有String数组一样传递字符串数组值的sql IN条件
String[] val=request.getParameterValues("Names");
for(int i=0;i<val.length;i++){
//printval[i];
}
我想String数组的值分配给SQL语句作为
如何传递的所有字符串值sql条件?如果阵列具有下列值 JAMES,SMITH, JAKE
等,然后我会通过它
sql = "where dept_name in('JAMES','SMITH','JAKE')";
理想我想字符串数组值内的SQL的条件下通过。
加入您可以构建一个查询作为一个过滤器,此查询追加到主查询。
StringBuilder sb= new StringBuilder();
String filter = "";
String[] val=request.getParameterValues("Names");
for(int i=0;i<val.length;i++){
//printval[i];
sb.append("'"+val[i]+"',");
}
filter = sb.ToString();
filter = filter.substring(0, filter.length()-1);
sql = "where dept_name in("+filter+")";
刚刚更新了我的错误答案。你可以试试吗? – 2013-05-09 12:16:15
我忘了把val作为数组,你可以再试一次吗? – 2013-05-09 12:20:57
它工作正常,谢谢 – user75ponic 2013-05-09 12:26:54
这很简单!
只是尝试:
import org.apache.commons.lang3.StringUtils;
StringUtils.join(new String[] {"Hello", "World", "!"}, ", ");
,你将不得不串用逗号
谢谢我会尝试这种方法。 – user75ponic 2013-05-09 12:38:01
这应该做的伎俩:
StringBuilder csvStr = new StringBuilder();
for(int i=0;i<val.length;i++){
if (val.length > 1 && i !=0) {
csvStr.append(",");
}
csvStr.append ("'").append(val[i]).append("'");
}
System.out.println(csvStr);
使用csvStr.toString()为您使用的是SQL。
sql = "where dept_name in (".concat(csvStr.toString()).concat(")");
谢谢,我会试试这个 – user75ponic 2013-05-09 12:27:14
sql = "where dept_name in(select column_value from table(?))";
则数组从JDBC传递到。
Object[] dept = {"Dev","QA", "Support"};
Array deptArray = connection.createArrayOf("VARCHAR", dept);
preparedStatement.setArray(idx, deptArray);
*“从表格(?)中选择column_value”应该如何适应? – Tom 2017-02-07 12:07:20
为什么不能使用'StringBuilder'来构建预准备语句? – Shark 2013-05-09 12:05:11
也许[这](http://stackoverflow.com/questions/16372046/getting-records-from-database-with-variable-condition/16372094#16372094)是你想要的 – A4L 2013-05-09 12:09:47