SQL Server数据库生成指定范围内的随机数
沉沙 2018-05-08 来源 : 阅读 3297 评论 0

摘要:在开发中很多时候,我们都会遇到这种需要生成一个指定范围随机数的情况,本文讲解了SQL Server数据库生成指定范围内的随机数的过程及原理。

在开发中很多时候,我们都会遇到这种需要生成一个指定范围随机数的情况。而且在很多语言中比如Java、C#、SQl等,都会有一个函数生成一个类似于0.234273983423789的随机小数,而所有的随机数都是通过这个最基本的随机数(0.234273983423789)变化过来的。


下面我说一下生成指定范围随机数的思路,比如我要生成一个100-999范围内的随机数,我就要保证我写的生成随机数的表达式所生成的值,最大是999,最小是100。还有就是要明白一个数学里的小道理,0.99去乘一个数字所得的结果约等于这个数但不等于这个数。什么意思呢?就是0.999*9000的结果肯定是等于8999.9999...的,一会儿用用到这个思想。


这里我再介绍两个函数,一会儿会用到。


floor():会返回一个小于等于当前数的最小整数 floor(2.5)=2


ceiling():和上个函数相反,会返回一个大于等于当前数的最大整数 ceiling(2.5)=3


最后看代码(随机生成一个100-999的随机数)


生成一个100-999的随机数,包括100和999


SELECT FLOOR(RAND()*900)+100


下面我们分析一下这段代码,首先从最里面开始,rand()会生成一个0.000000..到0.999999..的随机数,然后这个随机数乘以900以后 就会生成一个0到899...的随机数,最后在给它加上100,就会生成一个100到(899+100)的随机数也就是100到999的随机数


以下代码能输出所有的随机数,直到出现100或者999停止循环


declare @rand int 
WHILE 1=1 
    BEGIN 
    SET @rand=FLOOR(RAND()*900)+100 
    PRINT @rand 
    IF @rand=100 or @rand=999
         begin 
        break 
        end
     end



如果有更好的方法大家可以评论私信!一起交流!

 

这里还有一种比较好的方法,但是不太好理解,大家可以记下来。

 

DECLARE @Result INT 
DECLARE @Upper INT 
DECLARE @Lower INT 
   
SET @Lower = 1      --包括左边的数
   
SET @Upper = 11     --不包括右边的数
   
                    --[left,right)
  
SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Result

 

以上就是本文全部内容,学习更多的sqlserver数据库知识,请来职坐标sqlserver频道!


本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 3 不喜欢 | 0
看完这篇文章有何感觉?已经有3人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程