在我们写sql时候,where in 中的条目数超过1000条时候会报ORA_01795
2022/5/27 2:20:27
本文主要是介绍在我们写sql时候,where in 中的条目数超过1000条时候会报ORA_01795,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据库中in 条件最多允许1000项,这里我们处理一下
/** * @description * @date 2022/5/26 13:20 * @param column 列名 * @param values 项目集合 */
public static String GetWhereInValuesSql2(String column, List<String> values) { // sql语句 StringBuilder sql = new StringBuilder("("); long t1 = new Date().getTime(); // String sql = "("; // 值的个数 int valueSize = values.size(); // 批次数 int batchSize = valueSize / 1000 + (valueSize % 1000 == 0 ? 0 : 1); for (int i = 0; i < batchSize; i++) { if (i > 0) { sql.append(") or ") ; } sql.append(column).append(" in ("); for (int j = i * 1000; ( j < (i + 1) * 1000) && j < valueSize; j++) { if (j > i * 1000) { sql.append(","); } sql.append("'").append(values.get(j)).append("'"); } } sql.append("))"); long t2 = new Date().getTime(); System.out.println("t1="+t1); System.out.println("t2="+t2); System.out.println(t2-t1); return sql.toString(); } //这里我们调用一下,测试是否正确 public static void main(String[] args) {
List kk = new ArrayList(); for (int i = 0; i < 50000; i++) { kk.add(i+"b"); } System.out.println(GetWhereInValuesSql2("age",kk)); }
这篇关于在我们写sql时候,where in 中的条目数超过1000条时候会报ORA_01795的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程