天天看点

解决oracle用in查询超长的问题

oracle 用in查询列表超过1000条时会报错,这里提供一个方法,可以使用拼接or in (...) or in (...)...

public static String getInParameter(List list, String parameter) {
        StringBuffer sb = new StringBuffer();
        String returnString = "";
        if(list.size() == 0 || null == list) {
            returnString = sb.append(parameter).append("=''").toString();
        }
        for(int i=0;i<list.size();i++){
            if(i==0){
                sb.append(parameter);
                sb.append("(");
            }
            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(parameter);
                    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;

    }