日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于ORACLE 语句中,IN 超过1000个的解决方法

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于ORACLE 语句中,IN 超过1000个的解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在ORACLE SELECT 語句中 IN 的數據如果超過 1000,就會出錯,解決方法也很簡單,以C#代碼為例:

1、先寫一個方法,接收2個參數

參數1:接收 IN里面的數據,如:'a1','a2',...'a2000' ;

參數2:需要IN的列名;

public?string?GetSqlIn(?string?sqlParam,?string?columnName?)
????????
{
????????????
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、使用這個方法的返回值,代碼如下:

System.Text.StringBuilder?sql?=?new?System.Text.StringBuilder("");
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个的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。