处理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 ('')");
分享到:
相关推荐
通过上述方法,我们能够有效地处理超过1000个值的IN子句问题,避免了直接使用长列表所带来的Oracle限制问题。这种方法不仅适用于Java,也可以很容易地移植到其他编程语言中。 总之,在处理大量数据时,合理地分批次...
oracle中如果非要用in作为条件的话,超过1000条可以用col in() or col in()的方式来处理
Oracle查询处理in条件超过1000条的2种后台处理方式:A,后台拼接查询条件;B,每1000条查询一次,最后返回查询结果;
之前用PL/SQL DEVELOPER和SQLPLUS 登录数据库都没有问题,就是应用程序通过JDBC连接Oracle时无法成功连接,出现ORA-12505错误listener does not currently know of SID given in connect descriptor
《Oracle PL SQL专家指南:高级PLSQL解决方案的设计与开发》这本书无疑是一本深入探讨这个主题的专业资料。以下是基于章节标题的预想内容和相关知识点: 1. **Chapter02 - PL/SQL基础知识** - PL/SQL的结构:块...
最后一个解决方案是将 in 字句的内容放入到一个新表中,然后使用 join 或者 exists 连接该表来实现参数化查询。 我们可以使用参数化查询来实现 where in 和 like 的参数化查询,提高 SQL 的查询性能和安全性。但是...
### WebLogic 下 Oracle CLOB 类型转换解决方案 在使用 WebLogic 服务器进行应用程序开发时,尤其是在处理 Oracle 数据库中的 CLOB 类型数据时,开发者可能会遇到类型转换的问题。本文将详细介绍如何通过反射机制来...
以下是一些关于Oracle SQL使用的关键知识点,以及一些常见的错误和解决方案。 首先,当你在查询中使用组函数如MAX时,根据SQL标准,所有非组函数的列都必须在GROUP BY子句中指定。这意味着如果你有一个SELECT语句,...
Oracle数据仓库解决方案是一种高效、可扩展的架构,用于存储、管理和分析大量的企业级数据。它为企业提供了一种集中管理信息的方式,以便进行深入的数据分析、报告和决策支持。Oracle的数据仓库设计旨在优化查询性能...
Oracle支持多种数据类型,并且可以通过多种方式实现高可用性和灾难恢复,是大型企业首选的数据库解决方案之一。 ### SQL优化的一般原则 1. **选择合适的索引**:索引是提高查询速度的有效手段。合理的索引设计可以...
SQL行转列问题解决方案 SQL行转列问题是指将行记录转换为列记录的操作。本文将详细讲解SQL行转列问题的解决方案,并提供了一个具体的实例来帮助读者更好地理解该问题。 问题描述 假设我们有一个学生成绩表tb,...
根据提供的文件信息,我们可以归纳出一系列与Oracle SQL相关的练习题及其解决方案。这些题目旨在帮助初学者更好地理解并熟练掌握SQL语言的基本操作与高级查询技巧。接下来将逐一解析这些练习题,以便于学习者能深入...
### SQL中的分页解决方案 在数据库管理中,分页是一种常用的技术手段,它能有效地处理大量数据的查询结果,提高用户体验。本篇文章将详细介绍在三种主流数据库系统:Oracle、SQL Server 和 MySQL 中如何实现分页...
### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...
Oracle11g是Oracle公司的一个数据库版本,它提供了全面、开放和集成的信息管理解决方案,广泛应用于企业的数据存储和管理。SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行通信的编程...
以下是一个可能的解决方案: ```sql WITH ranked_data AS ( SELECT name, tran_date, mod_no, ROW_NUMBER() OVER (PARTITION BY name ORDER BY tran_date DESC) AS rn FROM abc ) SELECT name, tran_date, mod_...
在Oracle的编程环境中,动态SQL作为一种灵活的解决方案,能够根据不同的业务需求动态构建SQL语句,从而提供更加个性化的数据操作能力。本文将深入探讨Oracle中动态SQL的基本概念、执行原理以及具体的开发实践,旨在...
Oracle 8 PL/SQL程序设计是一门深度探讨Oracle数据库中PL/SQL编程语言的应用技术的主题。...通过深入阅读和实践,你可以提升对Oracle数据库管理和应用开发的能力,从而更好地应对企业级的数据库解决方案需求。
本书不仅可以作为数据库开发者和DBA的实践性解决方案参考,同时也是学习和深入理解PL/SQL语言的重要资源。它详细介绍了PL/SQL的各种编程技巧,并且专注于Oracle 11g的最新特性,是一本权威的指导书。在本书的辅助下...