• 批量更新sql表某字段范围内的随机数


    方法一

    步骤1:

    随机数的SQL函数为rand()
    select rand();rand()生成的是0-1之间的小数。

    如:0.644341629331498
    想要得到10之间的随机整数:
    Select round(rand()*9+1,0)
    n到m之间的随机整数(n<m):
    Select round(rand()*(m-n)+n,0)
    cast的作用是类型转换,将随机数转化为float(6),得到的结果就是我们需要的随机数了:
    Select cast(round(rand()*(m-n)+n,0) as float(6))

    步骤2:

    更新每一条数据的某一字段
    update [test].[dbo].[table] 
      set [table.rand] = cast(rand()*(999999-100000)+100000 as float(6))
    这种想法是有多天真啊。这样更新下来只能导致这个字段变成相同的一个随机值。

    如:
    777
     
    777
     
    777
     中奖啦!呵呵。

    步骤3:

    -- 更新 my_table 的 test_rand 字段
    

    --1、声明游标 指定有表指定的是数据库的哪一个字段.(在这里只能选择作为主键的id)


    DECLARE @user_id varchar(36) --可写多个
    DECLARE user_extension_cursor CURSOR

    FOR

    SELECT id --可写多个

    FROM [test].[dbo].[table] --可写条件

    --2、需要用FETCH来获取游标


    OPEN user_extension_cursor;

    FETCH NEXT FROM user_extension_cursor

    INTO @user_id  --可写多个

    --3、循环更新字段的值

    WHILE @@FETCH_STATUS = 0

    BEGIN

    UPDATE [test].[dbo].[table]

    SET [table].[rand] = cast(rand()*(m-n)+n as float(6))

    WHERE id = @user_id  --可写多个


    FETCH NEXT FROM user_extension_cursor
    INTO @user_id  --可写多个

    END

    CLOSE user_extension_cursor;

    DEALLOCATE user_extension_cursor;

    ---

    方法二

    update [test].[dbo].[table]
     set [table.rand] = cast(rand(checksum(newid()))*(999999-100000)+100000 as float(6))

     select newid()   如:57C26BA5-8304-4877-B5D4-256C80428B94
     select rand()     如:0.029051900701824
     select checksum(500)    如:500
     select checksum(newid())    如:35757911
     select rand(checksum(newid()))    如:0.657911662715189
     select rand(checksum(newid()))*(999999-100000)+100000    如:881621.124049528
     select cast(rand(checksum(newid()))*(999999-100000)+100000 as float(6))   如:609545.7

     非原创

  • 相关阅读:
    [公告]博客园新服务器已下订单
    清除SearchNet.exe
    [新闻]微软将在2007年发布的Office产品阵容
    卸载Internet Explorer 7 Beta 2 Preview引起原来的IE无法正常使用
    博客园准备购买新服务器
    [微软活动公告]微软最有价值专家(MVP)四月份在线申请开始了
    [公告]今晚数据库迁移至新服务器
    请wz不要把别人的文章当作自己的文章发表
    SQL Server 2000 To SQL Server 2005
    [公告]博客园数据库已成功迁移至新服务器
  • 原文地址:https://www.cnblogs.com/likeyou/p/2762257.html
Copyright © 2020-2023  润新知