在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个的解决方法相关推荐

  1. Oracle数据库中scott用户不存在的解决方法

    Oracle数据库中scott用户不存在的解决方法 参考文章: (1)Oracle数据库中scott用户不存在的解决方法 (2)https://www.cnblogs.com/hjweifans/p/ ...

  2. oracle test就死,简单说明Oracle数据库中对死锁的查询及解决方法

    死锁的原理 当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提 交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态, 此时的现象是这条语句一直在执行,但一直没有执行 ...

  3. Latex中文字超过文本宽度时解决方法

    一般多发于英文单词,直接在合适位置加"-"重新运行即可.如果是但或符号后接中文的情况,系统可能会默认将符号后一个中文字加在前一行末尾导致超过宽度,此时加//即可.不要在英语单词中加 ...

  4. 【Oracle 11g中 ORA-28000 账号被锁定的解决办法】

    Oracle 11g中 ORA-28000 账号被锁定的解决办法 ORA-28000账号被锁定的原因 如何修改 登录SYS用户 修改默认的登录限制次数 解锁被锁定的用户->解决 ORA-2800 ...

  5. mysql groupby having_浅谈sql语句中GROUP BY 和 HAVING的使用方法

    在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等.这些函数和其它函数的根本区别就是它们一般作用在多 ...

  6. mysql limit 动态参数_MySQL中limit使用动态参数的解决方法(拼接SQL字符串语句来执行SQL)...

    官方好像说过limit已经在5.6版本上支持了动态参数,但是测试时依然还是不行. 那么要解决limit动态参数唯一能做的就是使用字符串SQL拼接的形式,然后再进行执行. 一般有以下方式解决: 1.存储 ...

  7. oracle数据库重建em,oracle 11g em重建报唯一约束错误解决方法

    oracle 11g em重建报唯一约束错误解决方法 更新时间:2012年11月27日 15:07:33   作者: 今天在手工配置Oracle11g的EM时总是报如下错误,也没有找到解决办法,以下是 ...

  8. outlook express 邮件超过2G时的解决方法

    outlook express 邮件超过2G时的解决方法 问题描述:如果您的计算 机是Windows系统,而且您所使用的文件格式为FAT32,那么在Outlook Express中,如果"收 ...

  9. Oracle怎样创建共享文件夹,Oracle vm要如何使用共享文件夹的解决方法

    了解过的Oracle vm虚拟机的人,用过的朋友都知道,这是一个很方便的虚拟机,当然唯一不足的是它不支持直接的主机到虚拟机的文件拖拽,但是有其他的方式可以解决这个问题.下面是学习啦小编为大家整理的关于 ...

最新文章

  1. “它将改变一切”,DeepMind AI解决生物学50年来重大挑战,破解蛋白质分子折叠问题...
  2. 资源盗链困扰站长 安全狗内置盗链保护功能
  3. 2020-12-15 IEEE写作格式
  4. 计算机为什么启动二次才能打开,为什么电脑要2次重启才能启动显示器那
  5. 计算机组成原理「一」计算机系统概述
  6. WebForm页面间传值方法(转)
  7. 复选框(checkbox)、单选框(radiobox)的使用
  8. 使用MySQL处理百万级以上数据时,几个好习惯常识
  9. 一款基于jQuery可放大预览的图片滑块插件
  10. 初识python之django创建工程
  11. 深入Linux网络核心堆栈--netfilter详解(整理)
  12. 凸优化第八章几何问题 8.6分类
  13. 网页与多个服务器建立websoc,同一个页面怎么发起多个websocket
  14. SAP中的client
  15. 201771010126 王燕《面向对象程序设计(Java)》第十二周学习总结
  16. 云计算中的laaS、PaaS和SaaS是什么意思?
  17. Manjaro-KDE安装动态桌面插件
  18. AutoCAD VBA 通过选择集 删除图层上所有对象和图层
  19. 安卓4.4.4安装哪个微信版本_新版微信被网友骂惨了,后悔更新了吗?教你一招迅速回到旧版本...
  20. 【详解】Executors框架之Executors

热门文章

  1. 密码学专题 鉴别协议|实际应用的混合协议
  2. 在Docker里面安装Ubuntu,并且使用ssh进行连接
  3. Android设计模式之——状态模式
  4. 如果你扯了团队后腿,你应该内疚
  5. 解决:Failed to execute goal on project aopcore: Could not resolve dependencies for project com.cmos:
  6. 通过腾讯地图服务获取行政区划信息
  7. WORD列表缩进的文本起始点
  8. MVC 中Simditor上传本地图片
  9. 移动互联网广告 - 第十更 - 广告投放运营 DashBoard - 2016/12/10
  10. poj 2891 Strange Way to Express Integers