> 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'))