Oracle查询中IN参数超过1000的解决方法

在查询一个in中超过1000个参数的时候报错了,查找了下,这边总结的解决方法有两种,一种是通过union all,一种是循环将参数写到in中再用or连接语句。方法还有几种但是暂未尝试,先不进行记录。开发中主要用了第二种方法。

第一种,写法上没有个数限制,不过还是需要建个临时表,语句如下:

select *
  from table
 where id in (
select 1 from dual
union all
select 2 from dual
 ……)

第二种,通过Where or,将in中的参数控制在1000之内

if (e.SelectKeyValues.Count > 0)
 {
                string whereKey = string.Empty;
                for (int i = 0; i < e.SelectKeyValues.Count(); i++)
                {
                    if (i == (e.SelectKeyValues.Count() - 1))
                    {
                        whereKey += "'" + e.SelectKeyValues[i] + "'";
                    }
                    else if ((i % 999) == 0 && i > 0)
                    {
                        whereKey += "'" + e.SelectKeyValues[i] + "') or 质量特性编码 in ( ";
                    }
                    else
                    {
                        whereKey += "'" + e.SelectKeyValues[i] + "',";
                    }
                }
                where += " and (质量特性编码 in ( " + whereKey + " ))";

                
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值