`
happyzpx
  • 浏览: 28165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

处理 Oracle SQL in 超过1000 的解决方案

    博客分类:
  • sql
 
阅读更多

处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错。
这主要是oracle考虑性能问题做的限制。如果要解决次问题,可以用 where id (1, 2, ..., 1000) or id (1001, ...)

/**
* <b>function:</b> 处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错。
* 这主要是oracle考虑性能问题做的限制。如果要解决次问题,可以用 where id (1, 2, ..., 1000) or id (1001, ...)
* @createDate 2012-8-31 下午02:36:03
* @param ids in语句中的集合对象
* @param count in语句中出现的条件个数
* @param field in语句对应的数据库查询字段
* @return 返回 field in (...) or field in (...) 字符串
*/
private 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);
        //System.out.println(ids.subList(fromIndex, toIndex));
        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 ('')");
分享到:
评论

相关推荐

    [数据库]处理 Oracle SQL in 超过1000 的解决方案.txt

    [数据库]处理 Oracle SQL in 超过1000 的解决方案.txt

    Oracle SQL in 超过1000的解决方案list

    oracle中如果非要用in作为条件的话,超过1000条可以用col in() or col in()的方式来处理

    Oracle SQL Developer连接报错(ORA-12505)的解决方案(两种)

    之前用PL/SQL DEVELOPER和SQLPLUS 登录数据库都没有问题,就是应用程序通过JDBC连接Oracle时无法成功连接,出现ORA-12505错误listener does not currently know of SID given in connect descriptor

    LECCO SQL Expert (智能自动SQL优化)

     11、不是猜测或建议,而是SQL重写解决方案。 专家级的SQL 语句 LECCO SQL Expert的出现使SQL的优化变得更加简单。它不仅能在很短的时间内找到所有可能的优化方案,而且能够通过实际测试确定最有效的优化方案。同...

    Oracle SQL tuning 数据库优化步骤分享(图文教程)

    Quest Central是一款集成化、图形化、跨平台的数据库管理解决方案,可以同时管理 Oracle、DB2 和 SQL server 数据库。 一、SQL Tuning for SQL Server简介 SQL语句的优化对发挥数据库的最佳性能非常关键。然而不幸的...

    人工智能自动sql优化工具–SQLTuning for SQL Server

    QuestCentral(图1)是一款集成化、图形化、跨平台的数据库管理解决方案,可以同时管理Oracle、DB2 和 SQL server 数据库。它包含了如下的多个工具: 数据库管理(DBA)  数据库监控(Monitoring Pack)  数据库...

    2013 Oracle 技术嘉年华演讲PPT汇总下载

    2013 Oracle技术嘉年华:用于加速Oracle数据库的闪存解决方案_Rick Stehno.pdf 2013 Oracle技术嘉年华:云时代的数据库技术创新_李珈.pdf 2013 Oracle技术嘉年华:运营商数据库升级那些事_王晓征.pdf UNIFIED ...

    SQL应用开发范例宝典:SQL应用开发范例宝典.iso (源码光盘)

    全书共提供了463人个实例,每个实例都突出实用性,其中大部分是程序开发者所需的有关问题的解决方案。  本书配有光盘,光盘提供了书中所有实例的源代码。全部代码都经过精心调试,都可以正常运行。  本书适用...

    程序员的SQL金典.rar

    第9章 主流数据库的SQL语法差异解决方案  9.1 SQL语法差异分析  9.1.1 数据类型的差异  9.1.2 运算符的差异  9.1.3 函数的差异  9.1.4 常用SQL的差异  9.1.5 取元数据信息的差异  9.2 消除差异性的方案  ...

    数据虚拟化:数据整合问题的解决方案

    的IT分析专家Noel Yuhanna说,现在典型的企业都会采用多种数据库管理系统(DBMSs),如Oracle和SQL Server,而这些系统在最初设计上并不兼容。另外,企业越来越经常利用这些系统存储非传统型信息,比如非结构化数据和...

    ORACLE9i_优化设计与系统调整

    §1.4.1 SQL语句处理顺序 29 §1.4.2 COMMIT语句处理顺序 32 §1.5 共享池 33 §1.6 块缓存(数据高速缓冲区) 33 §1.7 数据库写入进程 34 §1.8 日志写进程 34 §1.9 数据库检查点 34 §1.10 归档处理 35 §1.11 ...

    SQL_SERVER应用与开发范例宝典_12357672.part3

    全书共提供了463人个实例,每个实例都突出实用性,其中大部分是程序开发者所需的有关问题的解决方案。  本书配有光盘,光盘提供了书中所有实例的源代码。全部代码都经过精心调试,都可以正常运行。  本书适用...

    ORACLE数据库智能化管理系统2012

    数据库状态及运行情况综合查看,使您了解ORACLE运行状况及空间、日志归档、数据文件等使用情况更直观,并可智能生成数据库热备份脚本和备份恢复方案,为您的数据库保驾护航,使您高枕无忧。 本系统可执行SQL分组语句后...

    SQL_SERVER应用与开发范例宝典_12357672.part2

    全书共提供了463人个实例,每个实例都突出实用性,其中大部分是程序开发者所需的有关问题的解决方案。  本书配有光盘,光盘提供了书中所有实例的源代码。全部代码都经过精心调试,都可以正常运行。  本书适用...

    SQL_SERVER应用与开发范例宝典_12357672.part1

    全书共提供了463人个实例,每个实例都突出实用性,其中大部分是程序开发者所需的有关问题的解决方案。  本书配有光盘,光盘提供了书中所有实例的源代码。全部代码都经过精心调试,都可以正常运行。  本书适用...

    程序员的SQL金典4-8

    第9章 主流数据库的SQL语法差异解决方案  9.1 SQL语法差异分析  9.1.1 数据类型的差异  9.1.2 运算符的差异  9.1.3 函数的差异  9.1.4 常用SQL的差异  9.1.5 取元数据信息的差异  9.2 消除差异性的方案  ...

    经典SQL语句大全

    set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid&gt;-1)’ exec sp_executesql @sql 注意:在top后不能直接跟一个变量,所以在实际应用中...

    经典全面的SQL语句大全

    虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一 个数据库内就包含了成千上万条记录。这时候不就死定了?  采用SQL,你就可以很快地找出准确的记录并且打开一个只...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

Global site tag (gtag.js) - Google Analytics