首页 > 代码库 > IN 查询时出现ORA-01795:列表中的最大表达式数为1000解决方法
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后面数据量过多的话就会报错。
解决方法是:用 orkeyword
如: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;
}
IN 查询时出现ORA-01795:列表中的最大表达式数为1000解决方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。