有没有办法绕过静态IN子句中1000项的Oracle 10g限制?我有一个以逗号分隔的列表,其中列出了我想在IN子句中使用的许多ID,有时这个列表可能超过1000个项目,此时Oracle会抛出错误.查询与此类似...
select * from table1 where ID in (1,2,3,4,...,1001,1002,...)
Run Code Online (Sandbox Code Playgroud) <select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
Run Code Online (Sandbox Code Playgroud)
但是,如果list包含超过 1000 个项目并且您使用的是 Oracle DB,则会出现以下异常:
java.sql.SQLSyntaxErrorException: ORA-01795: maximum number of expressions in a list is 1000
Run Code Online (Sandbox Code Playgroud)
我能做些什么来解决这个问题,使其适用于 1000 多个元素?