IN 查询时出现ORA-01795:列表中的最大表达式数为1000解决方法

问题描述:

SQL进行IN查询时出现:java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000


解决办法:

问题原因是:SQL进行IN查询时,IN中的数据量不能超过1000条。

例如:select * from student where id in (‘S1’,'S2'...........)

如果in后面数据量过多的话就会报错。


解决方法是:用 or关键字

如:select * from student where id in(’S1‘,'S2',...........'S900')or  id in ('S901',..........)


将list转化为String 得到如下字符串:  id in(’S1‘,'S2',...........'S900')or  id in ('S901',..........)

private static String getString(String id,List<String> list){
StringBuffer sb=new StringBuffer();
String returnString="";
if(list.size()==0||null==list){
returnString=sb.append(id).append("=''").toString();

for(int i=0;i<list.size();i++){
if(i==0){
sb.append(id);
sb.append(" in (");
}
sb.append("'");
sb.append(list.get(i).toString());
sb.append("'");
if(i>=900&&i<list.size()-1){
if(i%900==0){
sb.append(") or ");
sb.append(id);
sb.append(" in (");
}else{
sb.append(",");
}
}else{
if(i<list.size()-1){
sb.append(",");
}
}
if(i==list.size()-1){
sb.append(")");
}
}
returnString=sb.toString();
return returnString;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值