> ORA-01795: maximum number of expressions in a list is 1000
SELECT* FROM tableName WHERE ID IN('1','2','...','1001');
改成下面的方式:
SELECT* FROM tableName WHERE (0,ID) IN((0,'1'),(0,'2'),(0,'...'),(0,'10001'));
String str = "1,2,...,1001";
StringBuffer sb = new StringBuffer();
if (StringUtils.isNotEmpty(str)) {
sb.append("(");
String[] split = str.split(",");
int length = split.length;
for (int i = 0; i < length; i++) {
sb.append("(0,'");
sb.append(split[i]);
sb.append("'),");
}
sb.append(")");
sb.deleteCharAt(sb.toString().length() - 2);
}
System.out.println(sb.toString());// ((0,'1'),(0,'2'),(0,'...'),(0,'1001'))