对ORA-01795: 列表中的最大表达式数为 1000的处理(算法:计算数量及切割)
/**
* @category
* 原:strIDs in ( 100001,100002,100003,....................,110001,120001,130001,140001,150001)
* 转后:( strIds in (100001,100002,100003) or strIds in (....,.....,.....) or strIds in (130001,140001,150001))
* @see 处理strIDs查找的数量超过1000时进行分组处理
* @param orignal 括号内的IDs字符串
* @param spiltNum 分割后的小组内的数量
* @param flag 分割符号(仅限于单字符,格式如上)
* @param titlestrIDs名称
*/
public static String dealQuerySize(String orignal,String flag,String title,int spiltNum){
//返回无需处理的情况
if(StringUtil.isEmpty(orignal) || StringUtil.isEmpty(flag)){
return orignal;
}
int IDSNum = orignal.length()-orignal.replaceAll(flag,"").length()+1;//统计原字符串中ID的数量
//按1组处理的情况
if(IDSNum <=1000 && spiltNum > IDSNum){
return packageQueryStyle(orignal,title);
}
//按照数量分组
if(spiltNum<=0){
spiltNum = 1;
}
//ID分组
StringBuffer totalBuilder = new StringBuffer();
Pattern p = Pattern.compile("([0-9 ]+,){"+spiltNum+"}");//编译模式
Matcher m = p.matcher(orignal);//产生匹配结果
while(m.find()){//结果查找
String matchersIDS = m.group();
String apartIDS = " or " + packageQueryStyle(matchersIDS.substring(0, matchersIDS.length()-1),title);
m.appendReplacement(totalBuilder, apartIDS);
}
StringBuffer lastIDS = m.appendTail(new StringBuffer());
totalBuilder.append(" or "+packageQueryStyle(lastIDS.toString(),title));
return "(" +totalBuilder.toString().replaceFirst("or", "") + ")";
}
private static String packageQueryStyle(String str,String title){
return title+" in ("+str+")";
}
//统计数量的2种方式,这里只统计符号,需要的话自己+1
对ORA-01795: 列表中的最大表达式数为 1000的处理(算法:计算数量及切割)的更多相关文章
- Sql语句报ORA-01795: 列表中的最大表达式数为 1000
错误信息:java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000,错误信息如下: serviceid是:work -------------other W ...
- IN 查询时出现ORA-01795:列表中的最大表达式数为1000解决方法
问题描写叙述: SQL进行IN查询时出现:java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000 解决的方法: 问题原因是:SQL进行IN查询时.IN中的 ...
- java jdbc oracle ORA-01795: 列表中的最大表达式数为 1000
在操作SQL中存在In的数量如果超过1000条会提示 ORA-01795: 列表中的最大表达式数为 1000 归纳有几种方式出现的: 第一种是:我在上一个 [jdbc 同时执行 查询和删除操]作中 ...
- ORA-01795: 列表中的最大表达式数为1000的解决方法
IN中的数据量不能超过1000条. 解决方案:把条件分成多个少于1000的IN即: DELETEFROMT_MM_SECTION_SITE_UPDATEWHERE T.T_MM_SECTION_SL_ ...
- ORA-01795: 列表中的最大表达式数为 1000
系统报出一SQL异常,内容如下: java.sql.SQLException: ORA-01795: maximum number of expressions in a list is 1000 找 ...
- java.sql.SQLSyntaxErrorException: ORA-01795: 列表中的最大表达式数为 1000
后台报了一些异常日志,查阅后发现在 oracle 数据库中使用 in 关键字条件不能超过 1000 个,当时写查询语句时没有关注这个问题 总结一下解决方法 1.分多次查询,对查询要求不高的话.把入参的 ...
- 将Lambda表达式作为参数传递并解析-在构造函数参数列表中使用Lambda表达式
public class DemoClass { /// <summary> /// 通过Lambda表达式,在构造函数中赋初始值 /// </summary> /// < ...
- 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式.比如 select * from T_Employee where FNumber not in ( select top 5* ...
- python 中的列表解析和生成表达式 - 转
优雅.清晰和务实都是python的核心价值观,如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新的列表时可以使用列表解析( List comprehensions)和生成表达式,通过这两 ...
随机推荐
- hdu5086——Revenge of Segment Tree
Revenge of Segment Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- Android事件详解——拖放事件DragEvent
1.Android拖放框架的作用? 利用Android的拖放框架,可以让用户用拖放手势把一个View中的数据移到当前layout内的另一个View中去. 2.拖放框架的内容? 1)拖放事件类 2)拖放 ...
- 经常使用MD5算法代码
经常使用的MD5算法代码日期: 2014年8月4日作者: 铁锚 MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请參考 维基百科:MD5 MD5加密后 ...
- 暂停和屏蔽右键网页中的Flash
如何暂停网页中的Flash?原理很简单,就是屏蔽Flash的消息即可.屏蔽右键也可以通过此方法 直接贴代码吧,加了注释,很容易就能懂了 新建工程,加一个WebBrowser,再加两个按钮.Flash ...
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...
- 使用iftop网络流量监控
iftop这是一个非常有用的工具.下面的命令监视无线网卡在我的笔记本 iftop -i wlan0 比如,我现在玩音乐视频.iftop显示的信息: 基本说明: 1. 屏幕主要部分都是表示两个机器之间的 ...
- c#Enum的用法
public enum ResType { Role = 0, Dept = 1, Group = 2, Site = 3, Org = 4, Sub=8 } 这里定义了一个enum ResTy ...
- 用wireshark解析应用层存储包
工作中常常须要统计server上的rtp包接收.发送性能.不想自己再做一套统计软件,打算用现有的wireshark来做分析统计. 先把rtp头存成pcap格式文件,pcap文件格式及如何存储能够參照这 ...
- 【Windows Phone设计与用户体验】关于移动产品的Loading用户体验的思考
作为一款运行在移动端上的产品,必定会有一些耗时的操作.为了具有良好的用户体验,Loading效果是必不可少的,而什么形式的Loading才会有良好的用户体验? Loading形式简单分为两类: 一.遮 ...
- 14.4.3.2 Configuring Multiple Buffer Pool Instances 配置多个buffer pool 实例:
14.4.3.2 Configuring Multiple Buffer Pool Instances 配置多个buffer pool 实例: 对于系统 buffer pool 有多个G的范围, 把b ...