【发布时间】:2011-01-15 21:28:53
【问题描述】:
您好,我想使用以下语句生成一个唯一随机数:
Convert(int, (CHECKSUM(NEWID()))*100000) AS [ITEM]
因为当我在“from”上使用连接子句时,它会使用 NEWID() 生成双寄存器
我使用的是 SQL Server 2000
*PD:当我使用 Rand() 时,它可能会以 100000000 的概率 1 重复,但这非常关键,因此重复生成随机值的概率必须为 0%
我的 NewID() 查询和 SELECT 语句的结果重复 (x2) 我没有 NewID() 并在 SELECT 语句上使用 Rand() 的查询是单个 (x1) 但重复生成的随机值的概率不确定但存在!
谢谢!
【问题讨论】:
-
什么数据库?甲骨文?微软SQL? MySQL? PostgreSQL?许多数据库已经有了随机函数。
-
有什么问题?标志?没有浮点数?溢出?我们也使用 NEWID() 是有原因的:它可能是最好的解决方案
-
@Angel Escobedo,当我运行您的命令时:select Convert(int, (CHECKSUM(NEWID()))*100000) AS [ITEM] 我得到:消息 8115,级别 16,状态 2,第 1 行将表达式转换为数据类型 int 的算术溢出错误。
-
我不能使用 NEWID() 因为当我使用 Join 时,如果我在 SELECT 语句上使用 Distinct 也会产生重复
-
@KM select Convert(int, RAND(CHECKSUM(NEWID()))*10000) AS [ITEM] = 8114 for me SQL Server 8.0 (20000) SP 4
标签: sql sql-server tsql random