博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

T-SQL 在查询结果中添加一列不重复的随机数

Posted on 2013-04-08 12:27  fochan  阅读(930)  评论(0编辑  收藏  举报

 

如果 如下处理

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() 则被更新的列的值将是同一个数!