SQL server文档指出,使用相同的种子调用rand函数会产生相同的值,随后对rand()的调用将根据最初提供的种子产生值。
SELECT RAND(100), RAND(), RAND()但是,像这样的东西呢:
update dbo.product set price= rand();这将始终为所有行生成相同的值。对这种行为的“学术”解释是什么?
发布于 2014-10-19 20:56:11
由于RAND不会为每行运行,因此您可以使用ABS(CHECKSUM(NEWID()来完成每行的随机值。
DECLARE @Min INT = 10, @Max INT = 20
UPDATE dbo.product SET price = ABS(CHECKSUM(NEWID())) % (@Max - @Min) + @Minhttps://stackoverflow.com/questions/25881972
复制相似问题