回 帖 发 新 帖 刷新版面

主题:求一段代码

求一段代码
 
效果是在数据库中存储着 1-100 的其中一些数字
用一个段代码可以读取记录 找出数据库中 1-100 缺少的数字

谢谢了  在线等待!

回复列表 (共6个回复)

沙发

str=数据库中读取的所有值
for i=0 to 100
 if(instr(str,i))<0 then
  response.write "缺少--"&i&"<br>"
 end if
next

板凳

不是太懂楼主的意思?

3 楼

应该是这样的吧!

<%
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 楼

存储数字的表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 楼

有没有数组的算法? 直接的写法我会 但运行的速度很低 希望能只读一次数据库到数组做对比

期待

6 楼

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执行一次就能解决问题了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册