如果出现这个错误说明你传的参量是超过了一千个值;列如,你拼接了1001个id;

如何解决那,我这里提供两种方法:

1.每1000条加一个or in

列:

原:select p.* from t_premium p where p.premium_id in ('0','1'........,'1000',......'2000');

现:select p.* from t_premium p where p.premium_id in ('0','1'......‘999’)or in (’1000',......'1999');

如何实现那?

看下边

     public static void main(String[] agrs) throws Exception {
StringBuffer thirdPartyPayId=new StringBuffer();
for (int j = 0; j < 20; j++) {
if((j%10) == 0 && j > 1){
thirdPartyPayId.deleteCharAt(thirdPartyPayId.length() -1);
thirdPartyPayId.append(") OR " + "info.third_party_pay_id" + " IN ('" + j + "',");
}else{
thirdPartyPayId.append("'").append(j).append("',");
}
}
thirdPartyPayId.deleteCharAt(thirdPartyPayId.length() -1);
System.out.println(thirdPartyPayId.toString());
}

我这里用j代替了循环的"info.third_party_pay_id" ,兄弟们用的时候可以遍历自己的list,获取参量;

thirdPartyPayId.deleteCharAt(thirdPartyPayId.length() -1):去掉多余的标点符号,不能省;

SELECT DISTINCT
               nvl(info.apply_policy_no,'无') applyPolicyNo
             FROM T_THIRD_PARTY_PAY_INFO info,t_department_define o
            WHERE info.department_code = o.internal_department_code(+)
            AND (info.third_party_pay_id IN ($thirdPartyPayId$ ))
            AND info.FLAG = '2'

注:1.这种方式效率很慢;数据量小的话也就无所谓;数据量大的话不建议使用;

  2.()这两个括号必须要,因为(+)这个不能和in, not in 一起使用,但是因为

2.传递的参量转换成一个sql查询

SELECT DISTINCT
               nvl(info.apply_policy_no,'无') applyPolicyNo
             FROM T_THIRD_PARTY_PAY_INFO info,t_department_define o
            WHERE info.department_code = o.internal_department_code(+)
            AND info.third_party_pay_id IN (

    SELECT
                          sd.third_party_pay_id
                     FROM T_SOURCE_DOCUMENT sd,t_voucher v
                    WHERE sd.VOUCHER_ID = v.VOUCHER_ID and v.voucher_code=#voucherCode#
                    AND sd.third_party_pay_id IS NOT NULL
                    and v.CANCEL_STATUS != '2'

       )
            AND info.FLAG = '2'

就是说你获取参量的那个查询sql放进来;

后记:应该还有join以及exists两种思路。但用起来感觉所锁定目标不太清晰。故没做考量;

SQL使用IN参量不能超过1000的表现形式以及解决办法的更多相关文章

  1. oracle select in超过1000条报错解决方法

    本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(... ...

  2. ASP.NET伪静态-无法读取配置文件,因为它超过了最大文件大小的解决办法

    一直都在使用微软URLRewriter,具体的使用方法我就不多说了,网上文章很多. 但最近遇到一个问题,就是当web.config文件里面设置伪静态规则过多,大于2M的时候,就报错:无法读取配置文件, ...

  3. SQL Server数据库实例名与服务器名不一致的解决办法

    SQL Server数据库实例名与服务器名不一致的解决办法 --EXEC sp_addlinkedserver --   @server = 'PSHGQ' --GO --select * from  ...

  4. SQL Server中TOP子句可能导致的问题以及解决办法

    简介      在SQL Server中,针对复杂查询使用TOP子句可能会出现对性能的影响,这种影响可能是好的影响,也可能是坏的影响,针对不同的情况有不同的可能性.      关系数据库中SQL语句只 ...

  5. 关于sql server2008数据库的连接的几个问题及解决办法

    写在开头 不得不说给一台新的服务器配置和部署的确是个不小的工程,在这里先感谢我们的DEV焉域政同学在这方面做出的一些贡献:把安装过程极为困难的sql server2008成功安装到服务器上,并且为我们 ...

  6. discuz搬家后报错SQL:SELECT value FROM [Table]vars WHERE name=’noteexists1′的解决办法

    基本上每个站长都会经历网站搬家,网站搬家中有时候就会遇到这次提到的这个错误数据库报错::SQL:SELECT value FROM [Table]vars WHERE name=\\\'noteexi ...

  7. MS SQL SERVER 2008 R2 实例服务启动出现10048错误解决办法

    由于个人癖好,把MSSQLSERVER服务禁止了开机启动,每次需要的时候就输入CMD命令开启.今天在开启的时候,系统提示“发生服务特定错误:10048”. 于是打开SQL Server配置管理器,发现 ...

  8. SQL Server没有足够的内存继续执行程序 (mscorlib)的解决办法

    在Microsoft SQL Server Management Studio 中执行较大的sql脚本时,会报没有足够的内存继续执行程序(mscorlib)的错误.如下图所示 解决方法: 使用sqlc ...

  9. ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法

    ORA-01843: 无效的月份失败的 sql 为:XXXXXXXXXXXXXXXX 执行sql语句更改为美国语言后仍然失败, ALTER SESSION SET NLS_DATE_LANGUAGE= ...

随机推荐

  1. JS数组——冒泡、插入、快速排序

    前言:因为要对后端返回来的数据进行处理,之前之后冒泡,不够用,去看了插入跟快速,写下这篇笔记. 使用背景: 1.冒泡排序 数据比较少,小于1000 2.插入排序 数据比较少,大于1000不推荐 3.快 ...

  2. 深入理解DOM事件类型系列——剪贴板事件

    定义 剪贴板操作包括剪切(cut).复制(copy)和粘贴(paste)这三个操作,快捷键分别是ctrl+x.ctrl+c.ctrl+v.当然也可以使用鼠标右键菜单进行操作 对象事件 关于这3个操作共 ...

  3. css 实现垂直居中

    通用 代码: 1 2 3 4 <div id="parent"> <div id="floater"></div> < ...

  4. 【Python实践-9】将字符串转化为浮点型

    利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456. 思路:计算小数位数--->将字符串中的小数点去掉--->字符串转换为整数-- ...

  5. python3虚拟环境应用

    python3自带虚拟环境venv,大致操作只有三步 1. 创建虚拟环境 python3 -m venv venv(名称随意) 2. 激活虚拟环境 source venv/bin/activate 3 ...

  6. Ajax_数据格式_HTML

    [数据格式提要] 1.在服务器端Ajax是一门与语言无关的技术.在业务逻辑层使用何种服务器端语言都可以. 2.从服务器端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送.服务器端的编程语言只能 ...

  7. lua 栈最后调用的函数,用于看调试信息

    lua_getinfo int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar); 返回一个指定的函数或函数调用的信息. 当用于取 ...

  8. ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 Scores

    #1236 : Scores 时间限制:4000ms 单点时限:4000ms 内存限制:256MB 描述 Kyle is a student of Programming Monkey Element ...

  9. HDU 1234 简单模拟题

    题目很简单不多说了,我只是觉得这题目的输入方式还是很有特点的 #include <cstdio> #include <cstring> #include <algorit ...

  10. 5-45 航空公司VIP客户查询 (25分) HASH

    不少航空公司都会提供优惠的会员服务,当某顾客飞行里程累积达到一定数量后,可以使用里程积分直接兑换奖励机票或奖励升舱等服务.现给定某航空公司全体会员的飞行记录,要求实现根据身份证号码快速查询会员里程积分 ...