随机数可以通过程序生成,也可以通过SQL语句生成。通过程序生成随机数时一般采用硬件的编号+时间作为种子,这种方法在瞬间插入数据库N条数据的时候会影响随机数的效果,生成很多相邻的插入值相同。所以频繁插入时可以使用SQL语句的内置函数生成随机数,可以避免此类事情发生。
Demo:
====================================================================================
C#:
int min=0,max=10;
Random random = new Random(); int newNumber = random.Next(min, max); //newNumber 取值在 min和max之间(0-10)
T-SQL:
select abs(checksum(newid()))%10 //生成随机数取值范围 0-9
or
select cast( floor(rand()*10) as int) //生成随机数取值范围 0-10
or
select a+abs(checksum(newid()))%(b-a+1) //生成随机数取值范围 a-b
or
select rand() //生成随机串
随机读取:
SQL Server:
Select TOP N * From TABLE Order By NewID()
NewID()函数将创建一个 uniqueidentifier 类型的唯一值。上面的语句实现效果是从Table中随机读取N条记录
Access:
Select TOP N * From TABLE Order By Rnd(ID)
Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)
MySql:
Select * From TABLE Order By Rand() Limit 10
postgreSQL:
select * from glxt022 order by random() limit 5