Oracle in 超过1000怎么办
程序员文章站
2022-06-10 12:14:04
...
也是用到了才知道,oracle in表达式参数支持最大上限1000个,是个头疼的问题,
解决思路:拆分成多个in表达式,每个表达式中参数不超过1000,网上有很多解决的实现方法可以参考,有些看不大懂,就自己写了一个,分享下:
private String getSubQuery(String riskIds){ StringBuffer subQ = new StringBuffer(); subQ.append("("); if(!"".equals(riskIds) && null != riskIds){ String[] riskIDs = riskIds.split(", "); if(riskIDs.length>1000){ for(int i=0;i<riskIDs.length;i++){ if((i+1)%1000 == 0){ String temp = subQ.substring(0, subQ.length()-1); subQ.delete(0, subQ.length()); subQ.append(temp); subQ.append(") or cc.cntlKORInfo.korEntityId in ("); subQ.append(riskIDs[i]+","); }else{ subQ.append(riskIDs[i]+","); } } String temp = subQ.substring(0, subQ.length()-1); subQ.delete(0, subQ.length()); subQ.append(temp); subQ.append(")"); }else{ subQ.append(riskIds); subQ.append(")"); } }else{ subQ.append(")"); } return subQ.toString(); }
传入参数是一个"1,2,3,4"形式的string,分隔符",";
其他的实现方法可以参考下:
http://www.blogjava.net/hoojo/archive/2012/08/31/386692.html
http://www.cnblogs.com/ttc/archive/2008/07/21/1247790.htm