SQL Server文档说,使用相同的种子调用rand函数会产生相同的值,并且随后对rand()的调用将根据首先提供的种子生成值。
SELECT RAND(100), RAND(), RAND()
但是,比如:
update dbo.product set price= rand();
这总是为所有行生成相同的值。这种行为的“学术”解释是什么?
答案 0 :(得分:0)
由于RAND不会针对每一行运行,因此您可以使用ABS(CHECKSUM(NEWID()))来完成每行的随机值。
DECLARE @Min INT = 10, @Max INT = 20
UPDATE dbo.product SET price = ABS(CHECKSUM(NEWID())) % (@Max - @Min) + @Min