ORA-01795: maximum number of expressions in a list is 1000
使用in函数出现的报错问题
最近项目上线查询功能出现了一个日志报错:ORA-01795: maximum number of expressions in a list is 1000,
经过开发查询代码得知,是使用in函数出现的问题
如果是mysql:
对于in函数后的传参没有限制,不过对于参数的长度做了限制,默认是4M
如果是oracle:
对于in函数的传参,限制为1000,超过则报上面的错误
解决方法:
1.采用多个in ,原来in (1…1005) 写成 in(1…1000) or id in(1001…1005) (当前所选方法)
2. 采用join链接。
3. 其他任何办法,只要降低In中列表元素的数量即可。