位置: 编程技术 - 正文

SQL Server中的RAND函数的介绍和区间随机数值函数的实现(sql随机函数rand怎么用)

编辑:rootadmin

推荐整理分享SQL Server中的RAND函数的介绍和区间随机数值函数的实现(sql随机函数rand怎么用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql随机函数rand怎么用,sql server rand,sql server中的字符串常量只能用双引号括起来,sql server rank函数怎么用,sql server中的权限包括哪三种类型,sql中rand()函数怎么用,sql server中的权限包括哪三种类型,sql server中的权限包括哪三种类型,内容如对您有帮助,希望把文章链接给更多的朋友!

工作中会遇到SQL Server模拟数据生成以及数值列值(如整型、日期和时间数据类型)随机填充等等任务,这些任务中都要使用到随机数。鉴于此,本文将对SQL Server中随机数的使用简单做个总结 。

T-SQL 随机有关的三个函数

RAND([seed] 此函数生成从0到1之间随机 float 值(详细说明查看 CHECKSUM ( * | expression [ ,...n ] ) 此函数生成按照表的某一行或一组表达式计算出来的int校验和值,CHECKSUM 用于生成哈希索引(详细说明查看 NEWID ( ) 此函数生成 uniqueidentifier 类型的唯一值(详细说明查看 如果获得任意一个随机整数值?函数RAND生成的结果是float数据类型的,显然很难满足要求,不过可以通过对函数RAND的结果继续加工(比如其结果乘以某一个值保留整数部分等等)得到要求。很显然,函数CHECKSUM生成的结果是int数据类型,很容易满足我们的结果,不过其参数如果固定(表的某一行值相同或一组表达式值相同),那么其结果也是相同的。函数NEWID可以保证结果的唯一,但是其结果是unigueidentifer数据类型的。

从以上三个函数的结果值分析:函数RNAD和CHECKSUM的结果是能获得整数数值的。如果我们将函数NEWID的结果值作为函数CHECKSUM的参数,那么其每次生成的结果值都是不一样的int数据类型的数值。以下T-SQL代码如下:

执行后的查询结果如下:

从上面的查询结果看到组合生成的整数数值都是9位数的,平时工作中大多使用的随机整数值都是不太大的且都是自然数(0和正整数的集合),这就要求限制随机生成的整数数值。可以使用函数ABS对其结果进行处理得到任意一个自然数。这样,组合一起来的格式就是这样的:ABS(CHECKSUM(NEWID()))。为了便于使用便于使用我们通过将其封装到函数中,但是函数NEWID又不能在函数中使用,那我们就要考虑其他的方式:将函数NEWID封装在单列单行的视图中。其定义视图的T-SQL代码如下:

执行后的查询结果如下:

生成整数区间内的任意一个随机整数

上面的视图定义,我们继续讲解组合函数的进一步封装。我们先讲解如何限制随机生成的数值,取模运算可以实现生成在指定数值区间内的任意一个数值,例如:获取区间[3,5]内任意一个数字,我们设为区间的最小值为@intMin:3,最大值为@intMax,则该区间的间隔值为 @intMax - @intMin + 1: 5 - 3 + 1(3),那么针对任意的整数值设为为@intValue,然后对这个间隔值先进行取模运算在加上区间最小值,最后得到的值为: @intValue % (@intMax - @intMin + 1) + @intMin。如果@intValue为8,则结果值为5;如果@intValue为9,则结果值为3;如果@intValue为,则结果值为4……

针对以上的分析我们封装的T-SQL代码如下:

SQL Server中的RAND函数的介绍和区间随机数值函数的实现(sql随机函数rand怎么用)

调用以上函数的T-SQL代码如下:

执行后的查询结果如下:

生成日期区间内的任意一个随机日期

那么我们继续讲解 获取指定区间内的任意一个随机日期,不过我们要使用日期和时间的两个函数:DATEADD和DATEDIFF。使用DATEDIFF计算出日期区间的间隔值,同上的思路我们计算得到的一个随机整数值,然后通过DATEADD得到我们期望的一个随机日期。封装函数的T-SQL代码如下:

调用以上函数的T-SQL代码如下:

执行后的查询结果如下:

区间随机数获取的扩展思考

无论是获取数值区间内的随机数值,还是日期区间内的随机日期,我们都使用了视图vRandomGuid。如果有一个连续的数值序列,我们通过查询这个数值序列,结合我们的区间数值和随机排序,也可以实现以上的效果。

假设该数值序列为SeqDataTable(Num INT),数值区间[@intMin,@intMax],那么该数值区间任意一个随机数值的T-SQL代码如下:

当然也可以利用以上的数字序列SeqDataTable(Num INT),日期区间[@dtmMin,@dtmMax],那个该数字区间任意一个随机日期的T-SQL代码如下:

注意:以上代码无法执行成功的,也算是伪代码的。

SQL Server FileStream详解 FILESTREAM是SQLServer中的一个新特性,允许以独立文件的形式存放大对象数据,而不是以往一样将所有数据都保存到数据文件中。以往在对业务系统的文

SQL Server中数据行批量插入脚本的存储实现 无意中看到朋友写的一篇文章将表里的数据批量生成INSERT语句的存储过程的实现。我仔细看文中的两个存储代码,自我感觉两个都不太满意,都是生成

将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中目前SQLServer里面是没有相关的工具根据查询条件来生

标签: sql随机函数rand怎么用

本文链接地址:https://www.jiuchutong.com/biancheng/312862.html 转载请保留说明!

上一篇:浅析SQL Server中的执行计划缓存(下)(sql server功能介绍)

下一篇:SQL Server FileStream详解

  • PHP实现文件上传功能实例代码(php 上传文件)

    PHP实现文件上传功能实例代码(php 上传文件)

  • 谈谈sqlserver自定义函数与存储过程的区别(sql自定义)

    加入一笔记录到表bankMoney,并查询此表中userID= Zhangsan的所有存款的总金额。

    在这里再??乱幌麓娲⒐?痰?种传回值(方便正在看这个例子的朋友不用再去查看语法内容):1.以Return传回整数2.以output格式传回参数3.Recordset

    传回值的区别:

    output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。实例3:使用带有复杂 SELECT 语句的简单过程  下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。

    实例4:使用带有参数的简单过程

    实例5:使用带有通配符参数的简单过程

    实例6:if...else存储过程,其中@case作为执行update的选择依据,用if...else实现执行时根据传入的参数执行不同的修改.

    深入分析SqlServer查询计划 对于SQLServer的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题,因此本文只谈优化查询时如何看懂SQ

    sql 判断字符串中是否包含数字和字母的方法 判断是否含有字母selectPATINDEX('%[A-Za-z]%',‘ads')=0(如果存在字母,结果1)判断是否含有数字PATINDEX('%[0-9]%',‘sdf" class="img-responsive" alt="谈谈sqlserver自定义函数与存储过程的区别(sql自定义)">

    谈谈sqlserver自定义函数与存储过程的区别(sql自定义)

  • 新一代Windows系统重磅曝光:全局应用加入多标签特性(新一代win10)

    新一代Windows系统重磅曝光:全局应用加入多标签特性(新一代win10)

  • js实现通用的微信分享组件示例(js用什么编写)

    js实现通用的微信分享组件示例(js用什么编写)

  • 教你用javascript实现随机标签云效果_附代码(教你用纸折一只会跳的小兔子,非常好玩,小朋友都喜欢)

    教你用javascript实现随机标签云效果_附代码(教你用纸折一只会跳的小兔子,非常好玩,小朋友都喜欢)

  • 事业单位交所得税是否可以报国高新
  • 全年一次性奖金税收优惠政策
  • 出口商品认证
  • 社保缴费基数怎么算出来的啊
  • 个税为负数如何申报
  • 新会计准则下具体会计准则对银行的影响不包括
  • 计提房产税计入哪个科目
  • 无形资产资本化会计处理
  • 按价格从价缴纳增值税
  • 没有票据怎么要账
  • 本月无凭证需要结转吗
  • 资本公积转增股本个人所得税
  • 外聘人员需要扣个人所得税吗
  • 跨年度租金收入怎么算
  • 银行利息收入要开票吗
  • 营改增后房地产企业增值税如何核算
  • 会计报表指标也称为什么
  • 增值税小规模纳税人适用3%征收率
  • 福利性补贴包括哪些
  • 计划成本法下材料入库的会计分录
  • 记账凭证是出纳编制吗
  • 金税盘的用户名
  • 工厂材料成本改善报告范文
  • 玩穿越火线总是提示机器遇到
  • 工业废弃物处理方式
  • 应收账款零头会计处理
  • 隐藏资源管理器窗口
  • 社保退回的工伤怎么赔偿
  • 营业利润是怎么计算的?
  • ctfmon.exe文件在哪
  • 八仙花的养殖方法冬季怎么养
  • 固定资产终止确认的会计处理
  • 预付装修款账务处理
  • codelite怎么进行编译
  • vue项目运行报错
  • 前端 高级
  • chattr i
  • AttributeError: cannot assign module before Module.__init__() call
  • 免税后的商品有什么优势?
  • 银行收付款凭证是什么
  • 防伪税控开票
  • dedecms手册
  • mongodb使用案例
  • mongodb bi
  • vj刷题
  • 具体包括以下哪些方面
  • 母公司持有子公司70%股权
  • 高新技术企业认定中介机构
  • 什么叫日常业务
  • 母公司给子公司开票会有税务风险吗
  • 会计处理方法是什么意思
  • 预提短期借款利息的会计科目
  • 公司人事怎么办公积金提取流程?
  • 工会经费如何申请返还
  • 企业利润分配明细表
  • 残疾人就业保障金上年职工工资总额
  • 企业会计准则第4号固定资产
  • 每个单位都要缴纳五险一金吗
  • 新建的企业
  • u深度pe装机工具使用教程win7
  • linux服务器安装虚拟机
  • shell 写入文本
  • f11一键恢复系统详解
  • centos6.x下安装maven CentOS自动安装Maven的方法
  • centos重启动停在4m
  • linux源码安装软件的方法介绍
  • win7打印机删除后怎么恢复
  • 猫的猫的视频
  • jquery获取table的tr
  • 三消游戏在线
  • 怎么关闭android
  • 如何利用Fabric自动化你的任务
  • 大排量车船税怎么减免
  • 购买的环保设备未使用检察建议
  • 刷医保的网络可以用外网吗
  • 房产税自用改为出租,房产税如何申报
  • 怎么申请冬季取暖补贴
  • 采购设备税率多少
  • 上善若水 宁静致远,适合小学标语吗?
  • 广东地税服务电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设