zoukankan      html  css  js  c++  java
  • 批量更新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

     非原创

  • 相关阅读:
    django中有外键关系两张表的相互查找方法
    Python的Django框架中forms表单类的使用方法详解
    Django 模板中 变量 过滤器 标签 的使用方法
    Django如何让未登录的用户自动跳转至登录页
    Django 前后台的数据传递
    用css实现在横线中间插入文字
    CSS控制字体在一行内显示不换行
    如何在python3环境下的Django中使用MySQL数据库
    Linux小技巧之:两种方法统计访问web网站的前10个IP
    通过explain分析低效的SQL执行计划
  • 原文地址:https://www.cnblogs.com/likeyou/p/2762257.html
Copyright © 2011-2022 走看看