Sqlserver生成随机数的一些应用

Sqlserver虽然有rand()函数可以用,但单纯用rand()来获取随机数有很多限制,因为rand()生成的是类似0.747589267212168的随机小数,灵活处理一下就可以得到整数
1.select cast(ceiling(rand() * N) as int) //生成的数是N以内的证书
2.select cast(ceiling(rand(checksum(newid()))*N) as int) 这个同上,但在批量操作时往往这个会更有用,如
update table set field=cast(ceiling(rand() *5 ) as int) 和update table set field=cast(ceiling(rand(checksum(newid()))*N) as int)产生的效果就完全不同,前者虽然也是生成随机数了,但是所有table表里的field字段的数值都是一样的,而后者就各不相同,原理就是1是先生成随机数,然后再更新,2是更新每条记录前生成随机数。
3.将上面俩条语句中的ceiling换成floor就可以生成包含0的整数随机数。
4.随机查询得到N条记录用order by newid(),语句是select top N * from table order by newid() 

 

你可能感兴趣的:(sqlserver)