如果出现这个错误说明你传的参量是超过了一千个值;列如,你拼接了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. videojs

    <link href="http://vjs.zencdn.net/5.5.3/video-js.css" rel="stylesheet"> &l ...

  2. UVA - 514 Rails(栈模拟)

    题目: 给出一个序列,问将1,2,3,4……按从小到大的顺序入栈,能否得到给出的序列. 思路: 用stack模拟就可以了. 当前的cnt如果小于a[i],就将cnt入栈,否则就判断栈顶是不是和a[i] ...

  3. <MyBatis>入门三 sqlMapper文件

    增加 1.增删改在接口中的返回值 Integer.Long.Boolean.void 返回影响多少行 或 true | false 2.mapper 中 增删改没有返回值 (resultType或re ...

  4. linux od-输出文件的八进制、十六进制等格式编码的字节

    博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 od命令用于输出文件的八进制.十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符. 常见的文件为文 ...

  5. Python 开发面试题

    Python部分 将一个字符串逆序,不能使用反转函数 求从10到100中能被3或5整除的数的和 What is Python? What are the benefits of using Pytho ...

  6. Python基础之生成器、迭代器

    一.字符串格式化进阶 Python的字符串格式化有两种方式: 百分号方式.format方式,由于百分号的方式相对来说比较老,在社区里讨论format方式有望取代百分号方式,下面我们分别介绍一下这两种方 ...

  7. VScode输出中文乱码的解决方法------测试过可以用

    用python写个爬虫,配置个VScode环境,发现输出都是乱码,翻阅网站后发现一个简单有效的方法,在此谢过网络上的大牛们的无私分享,我也在此记录一下,以备后用: 文件---->首选项----& ...

  8. 一文教你用 Neo4j 快速构建明星关系图谱

    更多有趣项目及代码见于:DesertsX/gulius-projects 前言 本文将带你用 neo4j 快速实现一个明星关系图谱,因为拖延的缘故,正好赶上又一年的4月1日,于是将文中的几个例子顺势改 ...

  9. Eclipse错误出现:Unable to install breakpoint in... (未能解决)

    Unable to install breakpoint in... Eclipse Unable to install breakpoint in  的问题还是没解决 1.重装eclipse无效 2 ...

  10. ZOJ 3201

    id=15737" target="_blank">Tree of Tree Time Limit: 1000MS   Memory Limit: 32768KB ...