关于ORACLE 语句中,IN 超过1000个的解决方法
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                关于ORACLE 语句中,IN 超过1000个的解决方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                在ORACLE SELECT 語句中 IN 的數據如果超過 1000,就會出錯,解決方法也很簡單,以C#代碼為例:
1、先寫一個方法,接收2個參數
參數1:接收 IN里面的數據,如:'a1','a2',...'a2000' ;
參數2:需要IN的列名; 
????????{
????????????int?width?=?sqlParam.IndexOf(?"'",?1?)?-?1;
????????????string?temp?=?string.Empty;
????????????????
????????????for(?int?i?=?0;?i?<?sqlParam.Length;?i?+=?1000?*?(?width?+?3?)?)
????????????{
????????????????if(?i?+?1000?*?(?width?+?3?)?-?1?<?sqlParam.Length?)
????????????????{
????????????????????temp?=?temp?+?sqlParam.Substring(?i,?1000?*?(?width?+?3?)?-?1?)
????????????????????????+?")?OR?"?+?columnName?+?"?IN?(";
????????????????}
????????????????else
????????????????{
????????????????????temp?=?temp?+?sqlParam.Substring(?i,?sqlParam.Length?-?i?);
????????????????}
????????????}
????????????return?temp;
????????}
2、使用這個方法的返回值,代碼如下:
sql.Append?(?"?SELECT?"?);
sql.Append?(?"?T.A"?);
sql.Append?(?"?FROM?TEST?T"?);???
sql.Append?(?"?WHERE?1=1?"?);
if(?Col.Length?>?0?)
{
???? string?sqlStr?=?GetSqlIn(?Col,?"ColName"?);
???? sql.Append?(?"?AND?T.Col?IN?(?"?+?sqlStr?+?"?)"?);
}
sql.Append?(?"?ORDER?BY?T.A"?);???
?3、運行后得到的SQL字符串格式為:
select?t.*?from?TEST?t?where?t.A?in?(59,60)?or?t.A?in?(61,62)
?這樣就解決了 IN大于1000的問題。
?
轉載于:https://www.cnblogs.com/ttc/archive/2008/07/21/1247790.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的关于ORACLE 语句中,IN 超过1000个的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: [综述泛读] A survey on w
- 下一篇: 关于培训1
