SQL Server:如何在每行记录中生成唯一的随机数?

时间:2015-10-14 02:44:35

标签: sql-server random sql-server-2000

我正在使用SQL Server 2000.我想在每一行都不重复生成随机数。但是,我的代码无效。我尝试了很多次,但我无法解决重复问题。我的代码如下:我使用“case”处理重复的数字但不起作用。有人可以帮帮我吗?非常感谢!

<%= range_field_tag 'ranger', in: 1...10, step: 1 %>

2 个答案:

答案 0 :(得分:0)

SELECT RandNumber -- you can set @ran_no with this value in your sql query.
FROM   (
           SELECT ABS(CAST(NEWID() AS BINARY(6)) %500) + 1 RandNumber  --To set max limit number you can replace 500 with any number.
           FROM   sysobjects
       )            SAMPLE
GROUP BY
       RandNumber

正如你所说,你想在seq_no中设置值,在你的查询中你已经将@ran_no设置为seq_no,所以你应该尝试如下。

SET    @ran_no        = (SELECT TOP 1 ABS(CAST(NEWID() AS BINARY(6)) %1000) + 1 FROM   sysobjects)

在每一行生成随机数而不重复。尝试上面的东西。会帮助你。

答案 1 :(得分:0)

只需查看此link

即可
 SELECT RAND(CAST(NEWID() AS VARBINARY))
   FROM dbo.SysObjects

对于您的更新声明,请像这样使用。

update  dbo.test
set seq_no =  RAND(CAST(NEWID() AS VARBINARY)) --directly given this function here, 
where basket_seq = @i  and flag = 'left'

同样根据MSDN link,您也可以为Sqlserver2000使用随机函数。

http://blog.sqlauthority.com/2007/04/29/sql-server-random-number-generator-script-sql-query/