SQL中随机数和随机记录的选取
因为最近帮一个朋友做毕业设计,大概是一个简单的在线答题系统,要求SL做前端。因为仅仅是毕业设计,所以不设计到复杂的安全性和高并发效率问题,所以每次取数据都直接操纵SQL存储过程进行取随机记录。下面简单总结SQL中取随机数的几个方法:
1、使用RAND(),RAND()会生成一个随机小数,在TSQL中执行PRINT RAND(); ,结果为0.697555。如果需要整数的话,可以用扩大和取整的方法,如获得0-99的随机整数,方法为:PRINT CAST(RAND()*100 AS INT); 这样可以得到0-99的整数。同时,可以使用FLOAT和CEILING进行范围限定,对于二者的使用,需要记住:CEILING(N)>N>FLOAT(N).如果要获得500-1000的随机数,可以先获得0-500的随机数,然后加上500就可以了。
2、取指定关系中的前N个,可以使用:SELECT TOP N * FROM T_Test ORDER BY NEWID(); 这可以获得表中任意N条记录。
3、利用时间量求随机数,这个不能说是完全的随机,因为与时间有关系。可以将时间的小时,分,秒进行一些数学操作,并最终转换为INT。