最近工作中要随机生成一些数据,基本上全是通过rand()函数来完成。下面以几个例子做下简单说明。

1.生成年龄

思路:年龄一般为0-100岁,只要以当时日期为基准,用dateadd函数加上一个0-100的随机数即可。

代码:

declare @nl int,@csrq date

set @nl=cast((rand()*1000000) as int)%(100*365)

set @csrq=dateadd(dd,-@nl,getdate())

print @csrq

2.从数据表中随机取100条数据

思路:在生成数据的时候遇到其中有一张表中只有一个地区的数据,这样生成出来的地图其他地区全为空。所以准备从原表中直接取出部分数据库做修改后再写回数据库中。

代码:

declare @a int
set @a=CAST(rand()* 100000 as int)%9
select top 3 *,@a as a into #temp from test
order by newid()
delete from #temp where A=8
update #temp
set name=name+CAST(@a as varchar(20))

insert into test(id,name)
select ID,name from #temp
drop table #temp

3.随机生成50-100条数据

思路:在按地区写入数据的时候,如果都写入100条数据,则出来的效果不会理想,所以我希望按地区写入50-100条数据。用rand()函数生成一个最大值,然后用while循环生成数据。

declare @i int
set @i=CAST(rand()*100000 as int)%50+1
while @i<100
begin

end

 

另:rand()函数在同一事务中生成的值唯一,所以如果要在写入不同的值,要用循环做逐条写入。