Oracle 列表中的最大表达式数为1000

    xiaoxiao2021-03-25  23

    /**  * 解决Oracle where条件中in条件超过1000大小  列表中的最大表达式数为 1000  * 把以逗号(',')分割的字符串分割成固定大小的多个组   * 把分割开的字符串用 or关键字拼接 然后查询  * param:以逗号分隔的字符串  * eachGroupNum:每组多少个数量  * field:SQL语句中哪个字段查询  */ public String setConditionByOr(String param, int eachGroupNum, String field){     String[] paramArray = param.split(",");     int inArrayNum = (paramArray.length % eachGroupNum == 0) ? paramArray.length / eachGroupNum : paramArray.length / eachGroupNum + 1;     int m = 0;     int b = 0;     int n = eachGroupNum;     String[] p = new String[inArrayNum];     String[] sql = new String[inArrayNum];     for (int k = 0; k < paramArray.length; ++k) {       if (b < inArrayNum) {         p[b] = "";         for (; m < n; ++m) {           if (m >= paramArray.length){break;}                      int temp = b;           String[] tmp = p;   tmp[temp] = tmp[temp] + paramArray[m] + ",";         }         p[b] = p[b].substring(0, p[b].lastIndexOf(","));         sql[b] = field + " in (" + p[b] + ")";         ++b;         n += eachGroupNum;       }     }     String condition = "";     for (int j = 0; j < sql.length; ++j) {       condition = condition + sql[j] + " or ";     }     condition = condition.substring(0, condition.lastIndexOf(" or "));     return condition; }
    转载请注明原文地址: https://ju.6miu.com/read-149616.html

    最新回复(0)