主题:求一段代码
sovf
[专家分:270] 发布于 2007-05-29 11:35:00
求一段代码
效果是在数据库中存储着 1-100 的其中一些数字
用一个段代码可以读取记录 找出数据库中 1-100 缺少的数字
谢谢了 在线等待!
回复列表 (共6个回复)
沙发
wangsdong [专家分:21390] 发布于 2007-05-29 11:53:00
str=数据库中读取的所有值
for i=0 to 100
if(instr(str,i))<0 then
response.write "缺少--"&i&"<br>"
end if
next
板凳
mdwboy [专家分:410] 发布于 2007-05-29 12:22:00
不是太懂楼主的意思?
3 楼
tianyu123 [专家分:2570] 发布于 2007-05-29 12:47:00
应该是这样的吧!
<%
str="1,2,3,4,66,88" '从数据库中取的值用逗号分割开
for i=1 to 100
if instr(str,i)=false then
response.write"缺少--"& i &"<br>"
end if
next
%>
4 楼
lrj525 [专家分:260] 发布于 2007-05-29 12:52:00
存储数字的表A:字段num用来存数字
如现有数字 10,33,34,1,2,90
Set Rs=Conn.Execute("Select * From A")
response.write("缺少的数字有:")
For i=1 To 100
Do While Not Rs.Eof
If i=Rs("num") Then
Response.write(i&",")
End If
Rs.MoveNext
Loop
Next
5 楼
sovf [专家分:270] 发布于 2007-05-29 12:54:00
有没有数组的算法? 直接的写法我会 但运行的速度很低 希望能只读一次数据库到数组做对比
期待
6 楼
ir77 [专家分:570] 发布于 2007-05-29 14:52:00
select num from table order by num
dim missstr '缺少的字符串
missstr=""
rs.movefirst
for i=1 to 100
if rs("num")<>i then
missstr=missstr&"|"&i
else
rs.movenext
end if
next
dim miss
miss=split(missstr,"|")
miss就是一个数组,
没有其他的办法了,这个跟楼上的有点区别,只要读取一次数据库,执行一次判断就可以了,应该没有更好的方法了,关键在于,在数据库读取的时候,对于结果按照数字的大小先进性一次排序:“order by num”。
假如数据库有1,2,3,5,7,8这样几个数字,由于已经排过顺序了,所以只要把这几个数字和i对比,如果相等,rs.movenext,如果不等,就把i的值记下来,这样只要从1到100执行一次就能解决问题了。
我来回复