sql server中随机函数NewID()和Rand()

 更新时间:2015年10月19日 15:19:58   作者:无意  
在SQL语言中,随机函数NEWID和rand()用法并不相同,下面就将为您示例分析这两个随机函数的区别,供您参考,希望对您深入理解SQL函数能起到作用

在SQL Server中,随机函数有rand(),NewID(),其中rand是在0到1内随机取数,NewID则是生成随机的uniqueidentifier唯一标识符。

SELECT * FROM Northwind..Orders ORDER BY NEWID()
--随机排序

SELECT TOP 10 * FROM Northwind..Orders ORDER BY NEWID()
--从Orders表中随机取出10条记录

示例

A.对变量使用 NEWID 函数

以下示例使用 NEWID() 对声明为 uniqueidentifier 数据类型的变量赋值。在测试 uniqueidentifier 数据类型变量的值之前,先输出该值。

-- Creating a local variable with DECLARESET syntax.
DECLARE @myid uniqueidentifier
SET @myid = NEWID()
PRINT 'Value of @myid is '+ CONVERT(varchar(255), @myid)

下面是结果集:

Value of @myid is 6F9619FF-8B86-D011-B42D-00C04FC964FF

注意: 

NEWID 对每台计算机返回的值各不相同。所显示的数字仅起解释说明的作用。

随机函数:rand()

在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数。那就看下面的两种随机取整数的方法:

1、

A:select  floor(rand()*N)  ---生成的数是这样的:12.0

B:select cast( floor(rand()*N) as int)  ---生成的数是这样的:12

2、

A:select ceiling(rand() * N)  ---生成的数是这样的:12.0

B:select cast(ceiling(rand() * N) as int)  ---生成的数是这样的:12

    其中里面的N是一个你指定的整数,如100,可以看出,两种方法的A方法是带有.0这个的小数的,而B方法就是真正的整数了。

    大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:

方法1的数字范围:0至N-1之间,如cast( floor(rand()*100) as int)就会生成0至99之间任一整数

方法2的数字范围:1至N之间,如cast(ceiling(rand() * 100) as int)就会生成1至100之间任一整数

对于这个区别,看SQL的联机帮助就知了:
------------------------------------------------------------------------------------

比较 CEILING 和 FLOOR

CEILING 函数返回大于或等于所给数字表达式的最小整数。FLOOR 函数返回小于或等于所给数字表达式的最大整数。例如,对于数字表达式 12.9273,CEILING 将返回 13,FLOOR 将返回 12。FLOOR 和 CEILING 返回值的数据类型都与输入的数字表达式的数据类型相同。
----------------------------------------------------------------------------------
现在,各位就可以根据自己需要使用这两种方法来取得随机数了^_^

另外,还要提示一下各位菜鸟,关于随机取得表中任意N条记录的方法,很简单,就用newid():

select top N *  from table_name order by newid() ----N是一个你指定的整数,表是取得记录的条数.

相关文章

  • 使用sql语句创建和删除约束示例代码

    使用sql语句创建和删除约束示例代码

    本例主要介绍了使用sql语句创建和删除约束,不了解的朋友可以参考下
    2014-07-07
  • 判断数据库表是否存在以及修改表名的方法

    判断数据库表是否存在以及修改表名的方法

    本文为大家详细介绍下如何判断数据库表是否存在以及修改表名,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-09-09
  • SQL server 2016 安装步骤图文教程

    SQL server 2016 安装步骤图文教程

    本文通过图文并茂的形式给大家介绍了SQL server 2016 安装步骤,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-03-03
  • T-SQL查询为何慎用IN和NOT IN详解

    T-SQL查询为何慎用IN和NOT IN详解

    IN和NOT IN是比较常用的关键字,为什么要尽量避免呢?这篇文章主要给大家介绍了关于T-SQL查询为何慎用 IN和NOT IN的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • 秒懂drop、truncate和delete的区别

    秒懂drop、truncate和delete的区别

    这篇文章主要介绍了秒懂drop、truncate和delete的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • SQLSERVER 中GO的作用详解

    SQLSERVER 中GO的作用详解

    这篇文章主要介绍了SQLSERVER 中GO的作用详解的相关资料,需要的朋友可以参考下
    2015-10-10
  • mssql2005,2008导出数据字典实现方法

    mssql2005,2008导出数据字典实现方法

    在项目开发过程中会用到数据字典,本文将详细介绍mssql2005,2008如何导出数据字典,需要了解更多的朋友可以参考下
    2012-11-11
  • SQL堆叠注入简介

    SQL堆叠注入简介

    SQL堆叠注入,指的是在存在SQL语句交互的场景下,通过分号之间的间隔,使得能够一次性得执行多条SQL语句,今天通过本文给大家介绍SQL堆叠注入简介,感兴趣的朋友一起看看吧
    2022-08-08
  • MSSQL 检查所使用的语句是否符合标准

    MSSQL 检查所使用的语句是否符合标准

    标准SQL和T-SQL之间有很多区别——太多了,这里就不说了。还有,如果你在SQL Server上工作, 那么使用这些私有的扩展是有好处的。
    2009-11-11
  • sql自动化检查和分析工具 之soar和soar-web 安装和使用体验

    sql自动化检查和分析工具 之soar和soar-web 安装和使用体验

    这篇文章主要介绍了sql自动化检查和分析工具 之soar和soar-web 安装和使用体验,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论