ASP/SQL让一个列能在规定的数字范围内递增或随机生成不重复的数字
如范围是100-1000之间
id | name | number |
1 abc 101
2 aaa 266
3 dsf 999
4 sdf 500
5 dfd 328
最好是在一定范围内随机生成,如果不行,递增也可以。是在SQL执行,还是在程序中执行。怎么做?
------解决方案--------------------
- SQL code
'参数说明:c_floor随机数的下限,c_upper随机数的上限,num要生成随机数的个数'注意:c_floor<c_upper而且都不能为负数,num<=c_upper-c_floor,否则会出现死循环'调用 call random(1,40,10) 随机产生10个1-40之间的数字 Function random(c_floor,c_upper,num) Dim a(),temp,flag,i,j Redim a(num) '重定义数组 i=1 Do while i<cint(num)+1 '生成随机数 randomize() temp=cint(int((cint(c_upper)*rnd())+cint(c_floor))) flag=0 '判断生成的随机数时候已经存在,是则重新生成 for j=1 to ubound(a) if cint(temp)=cint(a(j)) then flag=1 Exit for End if next '将生成的随机数存放到数组中 if flag=0 then a(i)=temp Response.write a(i) & "<br>" i=i+1 End if loop random=a '返回一个数组对象 End function
------解决方案--------------------
- SQL code
rand() 返回从 0 到 1 之间的随机 float 值。select ceiling(rand()*1000)
------解决方案--------------------
- SQL code
create table t(id int ,name varchar(3),number int)insert t select1, 'abc' , 101 union all select 2 , 'aaa' , 266 union all select3 , 'dsf' , 999 union all select4 , 'sdf' , 500 union all select5 , 'dfd', 328 alter table t add nn intdeclare @n int,@m intset @n=1set @m=(select max(id)from t)while @n<[email protected]begin update t set nn= ceiling(rand()*1000) where [email protected] set @[email protected]+1endgo select * from tid name number nn----------- ---- ----------- -----------1 abc 101 9882 aaa 266 9523 dsf 999 4194 sdf 500 1975 dfd 328 167(5 行受影响)drop table t
------解决方案--------------------
随机和区间的简单 递增不重复的需要做特别处理
写个大概的
<%
Function RndNumber(MaxNum,MinNum)
Randomize
RndNumber=int((MaxNum-MinNum+1)*rnd+MinNum)
RndNumber=RndNumber
End Function
%>
如果需要小数把int去掉
递增和重复问题只能判断数据表中现有数据了
用select查吧
------解决方案--------------------
------解决方案--------------------