oracle in語句超過1000數(shù)據(jù)報錯和解決辦法

oracle有限制in語句的長度,如果查詢長度超過1000,就會報jdbc錯誤:“java.sql.SQLException: ORA-01795: 列表中的最大表達(dá)式數(shù)為 1000”。

因為項目用的是spirng jpa封裝的持久層代碼,數(shù)據(jù)量少的時候可以直接用in來查詢,數(shù)據(jù)量多的時候就會有這個報錯。下面是項目里的解決方案

對傳入的數(shù)組做分割處理,有兩種分隔方法,一種傳入結(jié)果期望的分組個數(shù),一種是傳入期望的每組個數(shù)。代碼如下:

/**

* 分割數(shù)組,以n為個數(shù)

* @param source 源數(shù)組

* @param n 多少組

* @return

*/

public static <T> List<List<T>> averageAssign(List<T> source,int n){

List<List<T>> result=new ArrayList<List<T>>();

int remaider=source.size()%n;? //(先計算出余數(shù))

int number=source.size()/n;? //然后是商

int offset=0;//偏移量

for(int i=0;i<n;i++){

List<T> value=null;

if(remaider>0){

value=source.subList(i*number+offset, (i+1)*number+offset+1);

remaider--;

offset++;

}else{

value=source.subList(i*number+offset, (i+1)*number+offset);

}

result.add(value);

}

return result;

}

/**

* 分隔數(shù)組,指定每組多少個元素

* @param source 源數(shù)組

* @param n 每組幾個元素

* @return

*/

public static <T> List<List<T>> averageAssignByPer(List<T> source,int n){

List<List<T>> result=new ArrayList<List<T>>();

int number=source.size()/n;? //總共幾組

int remain=source.size()%n;? //

for(int i=0;i<number+1;i++){

List<T> value=null;

if(i<number){

value=source.subList(i*n, (i+1)*n);

}else{

value=source.subList(i*n, i*n+remain);

}

result.add(value);

}

return result;

}

在處理數(shù)據(jù)量比較大的需求時謹(jǐn)慎使用in,in一般用于數(shù)量較小的時候。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,136評論 0 2
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,911評論 0 13
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,158評論 0 3
  • 《通往財富自由之路》——為什么你總是半途而廢 思考與行動 1. 你有沒有什么事情是自己做起來興趣盎然毫不費力,別人...
    QimuAI閱讀 583評論 0 2
  • 黑洞從字面上看,應(yīng)該是一個黑色的洞!其實不盡然,到目前在對于黑洞的介紹都是些假說! 黑洞他可能是洞,也可能他就是個...
    當(dāng)作夢I寫成真閱讀 193評論 0 1

友情鏈接更多精彩內(nèi)容