oracle in表達式參數支持最大上限1000個
方法是拆分為多個 col in ... or col in ...
#region 解決大於1000的問題 private String getSubQuery(String riskIds) { int strParaLen = riskIds.Length; string subQ = string.Empty; subQ = subQ + "("; if (!"".Equals(riskIds) && null != riskIds) { String[] riskIDs = riskIds.Split(','); if (riskIDs.Length > 1000) { for (int i = 0; i < riskIDs.Length; i++) { if ((i + 1) % 1000 == 0) { String temp = subQ.Substring(0, subQ.Length - 1); subQ = string.Empty; subQ = subQ + temp; subQ = subQ + ") OR TO_CHAR(ZFID) IN ("; subQ = subQ + riskIDs[i] + ","; } else { subQ = subQ + riskIDs[i] + ","; } } string s_temp = subQ.Substring(0, subQ.Length - 1); subQ = string.Empty; subQ = subQ + s_temp; subQ = subQ + ")"; } else { subQ = subQ + riskIds; subQ = subQ + ")"; } } else { subQ = subQ + ")"; } return subQ.ToString(); }
傳入參數是一個"1,2,3,4"形式的string,分隔符",";
借鑒了 http://eric-yan.iteye.com/blog/1942713