sql in 语句最大上限1000

   当我们用sql in语句进行查询时候。Oracle默认支持in中的数量为1000.
这也是为了sql的性能处理,因为in 的性能本来就不很好。所以遇到这种情况最好是通过关联查询进行处理。如果关联查询不能实现你的逻辑,就抛弃性能吧。拼接sql吧。可以通过 or in 进行实现(不推荐)
  其中进行拼接方法:
	private static String getOracleSQLIn(List<?> ids, int count, String field) {
	    count = Math.min(count, 1000);
	    int len = ids.size();
	    int size = len % count;
	    if (size == 0) {
	        size = len / count;
	    } else {
	        size = (len / count) + 1;
	    }
	    StringBuilder builder = new StringBuilder();
	    for (int i = 0; i < size; i++) {
	        int fromIndex = i * count;
	        int toIndex = Math.min(fromIndex + count, len);
	        String productId = StringUtils.defaultIfEmpty(StringUtils.join(ids.subList(fromIndex, toIndex), "','"), "");
	        if (i != 0) {
	            builder.append(" or ");
	        }
	        builder.append(field).append(" in ('").append(productId).append("')");
	    }
	    return StringUtils.defaultIfEmpty(builder.toString(), field + " in ('')");
	}

猜你喜欢

转载自hopegao.iteye.com/blog/1837420