如果我们在拼接where in时,其item的个数超过1000,在sql执行时会抛出ORA-01795异常
/**
* 获取where in语句
*
* @param column 字段名
* @param values 值集合
* @return (pk_test in ('a','b','c') or pk_test in ('d','e','f'))
*/
private String GetWhereInValuesSql(String column, List<String> values) {
// sql语句
String sql = "(";
// 值的个数
int valueSize = values.size();
// 批次数
int batchSize = valueSize / 1000 + (valueSize % 1000 == 0 ? 0 : 1);
for (int i = 0; i < batchSize; i++) {
if (i > 0) {
sql += ") or ";
}
sql += column+" in (";
for (int j = i * 1000; ( j < (i + 1) * 1000) && j < valueSize; j++) {
if (j > i * 1000) {
sql += ",";
}
sql += "'" + values.get(j) + "'";
}
}
sql += "))";
return sql;
}
作者:-亚州Asu-
若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
tips:你的点赞我都当成了喜欢~