你不能用简单的查询来做到这一点。计划一些将成为存储过程的东西。
SQL-SERVER生成器中的伪随机数生成器使用种子(tiny-int,int,small-int)并随机生成一个介于0和1之间的浮点数。希望您拥有某种数字键为您的记录。 您需要:
(1)设置一个WHILE循环来完成此操作。确保你也使用合理的计数器变量。增加它并且用循环的每次迭代检查它,因为失控循环没有乐趣。 (2)使用RAND()生成浮点数。您可以使用日期和时间中的某些值作为种子。它必须每次都改变,因为再次用相同的种子调用RAND(种子)会给你相同的数字。 以下是从SQL-Server 2005联机丛书:
SELECT RAND((DATEPART(mm, GETDATE()) * 100000)
+ (DATEPART(ss, GETDATE()) * 1000)
+ DATEPART(ms, GETDATE()))
(您可以在此阅读起来:寻找RAND()的Transact-SQL参考有一个环节出现,将告诉你一切。此。
(2)乘以生成十进制数十倍的一些功率,以便获得一个整数。
(3)存储这些号码某处,也许在表对象或一个临时表
( 4)根据商店检查新号码d表格以确保它不是一个dup(不太可能,但你永远不知道)。出于这个原因,以及针对失控循环的保险,请使用大于100的计数器限制。如果您确实有重复数据,请生成一个新的数字,直到您没有获得一个(另一个while循环)为止。请勿将任何数字在第二个临时表中,直到你确定他们不是愚蠢的。
(5)当临时表中的记录数达到100时,应该完成。你可以简单地把它放在一个变量中,但你可能想在最后检查这个变量与实际的数字。
(6)如果你想确保这些数字在一段时间内是唯一的,永远不要获得相同的记录两次,只需将临时表中的所有数字插入到您保存的记录中。在开始之前,您可以从该永久性表中重新填充临时表。你也可以在一段时间后(一个月,一年,无论如何)清除那张桌子。
(7)当你确定这个工作正常时,把它转换成存储过程。你可能每天都可以把它作为一项工作来运行。
希望这个工程。当你完成存储过程时,为什么不把它发布(包括评论)作为答案,这样每个人都可以看到如何去做。此外,请确保您可以在线访问MS-SqlServer图书的副本; Transact-SQL参考是无价的。
嗨, 我能做到这一点下面的方式 创建一个ID,日期时间,串新表rowno 和保存用逗号分隔的ID? 你认为在这可以有任何问题? – javadotnetcoder