''' <summary>

''' 在 oracle 里 , where in 语句有可能造成问题 : ORA-01795:列表中的最大表达式数为1000

''' 如果我们在拼接where in时,其item的个数超过1000,在sql执行时会抛出ORA-01795异常。

'''  下面这个函数对原来的字符串(比如:dim str = "1,2,3,4,5,6,7,...........,1001,1002")作处理

'''     dim strCondition = getWhereIn_ora01795("ALERT_ID",str, 999) , 处理后可以直接用在oracle

'''   where ALERT_ID in (" & strCondition & ")"

''' </summary>

''' <param name="_column">元素名</param>

''' <param name="strIDs">原始字符串,比如: 0,1,2,3,4,5,6,7,8,9 </param>

''' <param name="maxNumber">每个 or in 里面最多容许的元素数量 </param>

''' <returns></returns>

''' <remarks></remarks>

PrivateFunction getWhereIn_ORA01795(_column As String, strIDs As String, maxNumber As Integer) As String

Dim arr_IDs As String() = strIDs.Split(",") ' ID组成的 数组

' 假设 maxNumber 为 4

' 下面是转换的样式

' 0,1,2 ---> 0,1,2

' 0,1,2,3 ---> 0,1,2,3

If arr_IDs.Count <= maxNumber Then' 如果元素数量小于等于最大值

Return strIDs ' 原样返回

End If

' 现在知道元素数量 大于 最大值了,必须要做设置了

Dim strSql = arr_IDs(0).Trim ' sql语句, 从第0个元素开始

' 下面是几个转换的样式

' 0,1,2,3,4 ---> 0,1,2,3) or in (4

' 0,1,2,3,4,5,6,7,8,9 ---> 0,1,2,3) or in (4,5,6,7) or in (8,9

' 0,1,2,3,4,5,6,7,8,9,10,11 ---> 0,1,2,3) or in (4,5,6,7) or in (8,9,10,11

For ii = 0 To arr_IDs.Count - 1 ' 对于数组中的每个元素

If ii Mod maxNumber = 0 Then' 如果其序号 为4的倍数(0,4,8,12,。。。)

If ii > 0 Then' 如果其序号不是 0(其序号为 4,8,12。。。)

strSql &= ") or " & _column & " in (" & arr_IDs(ii).Trim

End If

Else' 如果其序号 不是4的倍数(1 2 3 5 6 7 9 10 11 。。。)

strSql &= ", " & arr_IDs(ii).Trim

End If

Next

Return strSql

End  Function

最新文章

  1. UWP开发:APP之间的数据交互(以微信为例)
  2. excel 作图中次横坐标及次纵坐标的调试,以及excel自定义轴标签的步骤方法
  3. linux常用命令之查阅文件
  4. mysql将int 时间类型格式化
  5. 内部类&amp;匿名内部类
  6. RxJava 平常使用
  7. C# 配置文件读取与修改
  8. JAVA学习第四十七课 — IO流(一):文件的读写
  9. samba服务器上文件名大小写
  10. rebase
  11. CSharp笔记&gt;&gt;&gt;多语言,注册
  12. 如何用C#寻找100到999的所有水仙花数?
  13. 理解WebKit和Chromium: Android 4.4 上的Chromium WebView
  14. MySQL8主从配置
  15. Faster R-CNN:详解目标检测的实现过程
  16. centos6安装ElasticSearch5.6.5错误记录
  17. [转] Entity Framework 无法加载指定的元数据资源。
  18. Atcoder #014 agc014_D 树形DP+nim变形
  19. js中的数组对象排序
  20. JavaScript (预热)

热门文章

  1. 基于OceanStor Dorado V3存储之精简高效 Smart 系列特性
  2. kali渗透综合靶机(十八)--FourAndSix2靶机
  3. ASP.NET 中关GridView里加入CheckBox 在后台获取不到选中状态的问题
  4. PyTestReport 自动化报告
  5. 五分钟看懂UML类图与类的关系详解
  6. 开发技术--浅谈Python函数
  7. FCC-学习笔记 Missing letters
  8. Android内部存储与外部存储的文件操作类
  9. fetch的常见问题及其解决办法
  10. JS格式化JSON串显示在表格中