使用sql把字段值批量改为随机数字

有时候会有个需求,把数据库某一个字段的值批量修改为一个随机值。

使用sql把字段值批量改为随机数字

当面对这个需求的时候,思考了下,会有如下几种办法:
1. 用程序把结果集读取出来,一行一行的遍历做修改,把值改为随机。
2. 直接用sql实现。
方案1还是暂时被pass掉了,虽然可以实现,但还需要调数据库驱动,写代码,费尽。

于是就想着用sql来实现,马上就写出来了:update user set count=convert(int, rand()*1000),结果就运行了一下,哎呀妈。。坏了。
数据库count字段的值咋全是一样的呢?
后来一想,也难怪,sql执行之前,数据库引擎会把count值算好,就算是写死了,是批量update,并不会每次都去读取最新的count值。
那么思索良久,用user表的user_id字段配合,写出了如下的sql,完成任务。user为表名称,user_id为主键,cont为要修改的字段。

DECLARE @user_id varchar(36) DECLARE user_extension_cursor CURSOR FOR SELECT user_id from user OPEN user_extension_cursor; FETCH NEXT FROM user_extension_cursor INTO @user_id WHILE @@FETCH_STATUS = 0 BEGIN UPDATE user SET count = convert(int, rand()*1000) WHERE user_id = @user_id FETCH NEXT FROM user_extension_cursor INTO @user_id END CLOSE user_extension_cursor; DEALLOCATE user_extension_cursor;

相关阅读