最近工作中要随机生成一些数据,基本上全是通过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> 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()函数在同一事务中生成的值唯一,所以如果要在写入不同的值,要用循环做逐条写入。