zoukankan      html  css  js  c++  java
  • sql 两个数字范围取随机数

    常用到通过两个数字之间获取随机数,C#中有内置方法,数据库中没有。以前有找到过一个方法,是通过数据库自定义函数实现,但是找不到了,今天自己写了个,记录下来备用!

    代码如下:

    if exists(select * from sys.objects where name = 'f_random')
        drop function f_random
    go
    /*
    两个数之间获取随机数
    */
    create function f_random
    (
        @min_num int,
        @max_num int
    )
    returns int
    as
    begin
        declare @basicnumber decimal(18,9)    --基数
        declare @randnumber decimal(18,9--随机数
        if @max_num <= 10
            set @basicnumber = 10
        else if @max_num <= 100
            set @basicnumber = 100
        else if @max_num <= 1000
            set @basicnumber = 1000
        else if @max_num <= 10000
            set @basicnumber = 10000
        while 1 = 1
        begin
            select @randnumber = randvalue from vRandom
            set @randnumber = @randnumber * @basicnumber
            if @randnumber >= @min_num and @randnumber < @max_num
                break
            else
                continue
        end
        return cast(@randnumber as int)
    end
    go

    使用方法:

    select dbo.f_random(1,100) as randnum    

    一定要加dbo!

    专注iOS、Android、Java、Golang开发等涉及开发管理相关。 技术博客:http://xiaopin.cnblogs.com
  • 相关阅读:
    [hdu4035]maze
    [codeforce][148d]
    [bzoj3507]通配符匹配
    [BZOJ4831]
    子串
    【洛谷1373】小a和uim之大逃离
    【JZOJ6303】演员
    [jzoj6296]选票
    字符串哈希
    [ABC137d&e]RE
  • 原文地址:https://www.cnblogs.com/xiaopin/p/2781129.html
Copyright © 2011-2022 走看看