当前位置:  开发笔记 > 编程语言 > 正文

从SQL生成随机值

如何解决《从SQL生成随机值》经验,为你挑选了1个好方法。

看起来SQL Server和大多数其他产品一样,随机函数真的不是随机的.所以我们有这个很好的小函数来生成一个10 char值.有没有更好的方法来完成以下操作.我打赌有.

DECLARE @SaltCount INT;
SELECT @SaltCount = COUNT(*) FROM tmp_NewLogin;
PRINT 'Set Salt values for all records' + CAST(@SaltCount AS VARCHAR(10))
DECLARE @CharPool CHAR(83);
DECLARE @Salt VARCHAR(10);
SET @CharPool = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!"#$%&()*+,-./:;<=>?@';

SET NOCOUNT ON;
updateSaltValue:
    SET @Salt = ''
    SELECT @Salt = @Salt + SUBSTRING(@CharPool, number, 1) FROM
    (
    SELECT TOP 10 number FROM MASTER..[spt_values] WHERE TYPE = 'p' AND Number BETWEEN 1 AND 83
    ORDER BY NEWID()
    ) AS t

    UPDATE TOP(1) [table] SET [Salt] = @Salt WHERE [Salt] IS NULL

IF (@@ROWCOUNT > 0)
    GOTO updateSaltValue

SET NOCOUNT OFF;

PRINT 'Completed setting salts for all records';

user34850.. 9

大多数程序员犯了重新发明随机化功能的错误,并最终得到了一些非随机的东西.我建议你坚持使用内置的RAND()函数.播种一次,然后根据需要获取尽可能多的值.



1> user34850..:

大多数程序员犯了重新发明随机化功能的错误,并最终得到了一些非随机的东西.我建议你坚持使用内置的RAND()函数.播种一次,然后根据需要获取尽可能多的值.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有