如果 如下处理
select *,rand()*1000 as r
from t
那生成的 r列 都是同一个数。
解决方式:
select *,rand(ABS(CHECKSUM(NEWID()))) as r
from t
结果:
延伸应用场景:将原先的测试数据的操作时间打散到过去的近3个月内
update [tbDoc]
set OperateDate = DATEADD(dd,-90*rand(ABS(CHECKSUM(NEWID()))),getdate())
注:如果 是-90*rand() 则被更新的列的值将是同一个数!