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;
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM