• 批量更新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

     非原创

  • 相关阅读:
    REST-framework快速构建API--生成Swagger接口文档
    Django后端彻底解决跨域问题
    Zabbix实战-简易教程--DB类--ClickHouse
    Django权限控制进阶
    django自定义rbac权限组件(二级菜单)
    jQuery事件委托
    model中的Meta类
    django中ModelForm解决多表单组合显示问题
    Django请求的生命周期
    AJAX
  • 原文地址:https://www.cnblogs.com/likeyou/p/2762257.html
Copyright © 2020-2023  润新知