SqlServer更新几个属性列为随机数据

今天写好服务后想测试一下,需要导入一些数据后为其随机取日期以及随机取字段’是’,’否’。想当然的就用rand()来赋值,发现结果每条数据都是同一数据,一条update语句所以也就只取了一个随机数。

想到了newid()取全局不重复的唯一随机值,变相的生成限定范围内的随机数。

取限制范围内的随机时间,可以先取时间差,然后用newid()获取随机ID,对时间差求余获取随机时间。

随机取字段’是’,’否’,同理,取随机数加一个case when判断赋值即可。

1
2
3
4
5
6
7
8
9
update DATASHOW_YXSH set BDSJ = DATEADD(second,ABS(CHECKSUM(NEWID()))%DATEDIFF(second,'2017-9-1','2017-9-1 23:59:59'),'2017-9-1') where SFBLWC = '已完成';

UPDATE DATASHOW_YXSH SET SFYBD = T.randValue
FROM
(
SELECT KSH,CASE WHEN RIGHT(ABS(CHECKSUM(newid())),1) > 5 THEN '是' ELSE '否' END AS randValue
FROM DATASHOW_YXSH
)T
WHERE DATASHOW_YXSH.KSH = T.KSH