oracle in 超过1000,mybaties循环解决

文章介绍了当Oracle查询中IN子句的元素超过1000个时,如何通过SQL拼接技巧,将大集合分割成多个小于1000的子集,以避免Oracle的限制。使用了IF和FOREACH循环以及TRIM函数来动态生成OR条件,确保查询的正常执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle in 超过1000

拼接效果为 where ( id in ([0-999]) or id in ([1000-1999]) )
亲测好用

<where>
 <if test="list != null and list.size > 0">
    (id IN
    <!-- 处理in的集合超过1000条时Oracle不支持的情况 -->
    <trim suffixOverrides=" OR id IN()">
        <foreach collection="list " item="Id" index="index" open="(" close=")">
            <if test="index != 0">
                <choose>
                    <when test="index % 1000 == 999">) OR id IN (</when>
                    <otherwise>,</otherwise>
                </choose>
            </if>
            #{Id}
        </foreach>
    </trim>
    )
 </if>

)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值