【发布时间】:2010-11-05 22:03:32
【问题描述】:
我的表中的每一行都需要一个不同的随机数。以下看似显而易见的代码对每一行使用相同的随机值。
SELECT table_name, RAND() magic_number
FROM information_schema.tables
我想从中得到一个 INT 或 FLOAT。剩下的故事是我将使用这个随机数来创建一个与已知日期的随机日期偏移量,例如从开始日期偏移 1-14 天。
这适用于 Microsoft SQL Server 2000。
【问题讨论】:
-
是否有不使用 NEWID() 的解决方案?我希望能够为给定的种子生成相同的随机数序列。
-
@Rory 问这个作为新问题,它会得到更多的关注。 (我的回答是使用固定的随机数表,例如这个著名的随机数标准集:rand.org/pubs/monograph_reports/MR1418/index.html)
-
RAND 是在 2005 年推出的,这个问题是在 2009 年提出的,哪些组织仍在使用 SQL 2000,因为那是第一个版本,足以永久使用。
-
Rory MacLeod 问道:“有没有不使用 NEWID() 的解决方案?我希望能够为给定的种子生成相同的随机数序列。”答案是肯定的,但它有点令人费解。 1. 创建一个返回 select rand() 的视图 2. 创建一个从视图中选择值的 UDF。 3. 在选择您的数据之前,先播种 rand() 函数。 4. 在您的选择语句中使用 UDF。我将在下面发布一个完整的示例
标签: sql-server tsql sql-server-2000