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

时间:2025-02-16 12:34:09

问题描述:

SQL进行IN查询时出现:: 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(()==0||null==list){
returnString=(id).append("=''").toString();

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