关于sql:如何使用随机数据更新字段?

关于sql:如何使用随机数据更新字段?

How to update a field with random data?

我在具有1000多个记录的数据库中有一个新的varchar(10)字段。 我想更新表格,以便可以在字段中获取随机数据。 我在寻找SQL解决方案。

我知道我可以使用游标,但这似乎不太好。

MS-SQL 2000,BTW


1
UPDATE MyTable SET RandomFld =  CONVERT(VARCHAR(10), NEWID())


类似于(未经测试的代码):

1
2
UPDATE yourtable
SET yourfield= CHAR(32+ROUND(RAND()*95,0));

显然,如果要最多十个字符,则串联更多的随机字符。
查询优化器可能会将所有字段设置为相同的值。在这种情况下,我会尝试

1
SET yourfield=LEFT(yourfield,0)+CHAR

诱使优化器每次表达式重新计算。


为什么不使用当前时间戳的md5校验和的前10个字符和一个随机数?


此外,如果您只是为了进行测试或一次使用,我会说真的没有必要采用优雅的解决方案。


您可能可以根据需要查找类似的内容以加载值的测试数据集


如果您在SQL Server中,则可以使用

1
CAST(RAND() AS VARCHAR(10))

编辑:这将仅在迭代内工作。作为多行插入的一部分,它将对每一行使用相同的RAND()结果。


这个怎么样:

1
UPDATE TBL SET FIELD = LEFT( CONVERT(VARCHAR(255), @myid),10)

如果这只是一次将数据输入系统的事情,那么我真的不觉得使用游标有什么问题,就像我讨厌游标确实占据了位置一样。


推荐阅读