将String / Array分解为较小的String / Array

时间:2013-01-04 05:49:46

标签: arrays string vb6

在Oracle中,IN子句除了超过1000个条目外,例如

Select Name From Student Where Student_ID IN (1,2,3,4,5,...1000,1001,1002,1003,...)

是不可接受的,它被分解为

Select Name From Student Where Student_ID IN (1,2,3,4,5,...1000) OR 
Student_ID IN (1001,1002,1003,...)

现在,我将这些ID作为逗号分隔的字符串,即1,2,3,4,5,...1000,1001,1002,1003,...。 什么是将其分解成更小部分的更快方法?

1 个答案:

答案 0 :(得分:0)

首先,确定SELECT语句的长度,IN内没有任何数据(让我们将这些逗号分隔的数字称为IN字符串)

Len ("Select Name From Student Where Student_ID IN ()")

现在,您的上限为1000- Len ("Select...")

然后,执行InStrRev("1,2,3,4,5...",",",limit)以获取您将插入Select的IN字符串中的逗号分隔数字的snipplet,它仍将低于1000个字符)。从IN字符串中删除插入的snipplet(不要忘记在重复循环之前从IN字符串中删除任何前导逗号)

然后重复任务,直到用完IN字符串。不要忘记更改第二次运行的限制,因为它们不使用完整选择,而是使用OR Student_ID IN,但逻辑保持不变。