`

sql server的随机函数newID()和RAND()

阅读更多
sql server的随机函数newID()和RAND()


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 server中随机函数NewID()和Rand()

    在SQL语言中,随机函数NEWID和rand()用法并不相同,下面就将为您示例分析这两个随机函数的区别,供您参考,希望对您深入理解SQL函数能起到作用

    SQL Server里如何随机记录集

    的文章,我想给你简单介绍下SQL Server里如何随机记录集。 1 SELECT * FROM Person.Person 2 ORDER BY NEWID() 3 GO  这会引入新的UNIQUEIDENTIFIER数据类型列,SQL Server会在那列上进行物理排序操作。 ...

    SQL Server 索引基础知识

    整理了一下郭红俊大哥的关于SQL索引的10篇基础知识,...5.理解newid()和newsequentialid() 6.索引的代价,使用场景 7.Indexing for AND 8.数据基本格式补充 9.Indexing for OR 10.Joins 时的三种算法简介档,方便查询.

    SQL Server索引基础知识.pdf

    非聚集索引 8 测试中常看指标和清除缓存方法 15 主键与聚集索引 18 理解newid()和newsequentialid() 20 索引的代价,使用场景 23 Indexing for AND 27 数据基本格式补充 30 Indexing for OR 32...

    SQL_Sever数据库常用语句大全.zip

    SQL_Sever数据库常用语句大全.zip SQL_Sever数据库常用命令大全.zip power函数获取数值的n次方 round函数保留指定位数小数点(指定位数后四舍五入) ...newid函数随机抽取n条记录 新增数据库表数据 ......

    生成类别随机数

    在sqlserver中,有newid()生成随机数,我这里的是自定义生成随机数,可以用在asp,asp.net等b/s页面中,

    解决sql server保存对象字符串转换成uniqueidentifier失败的问题

    web应用采用的是ssh框架,数据库使用的sql server2014版本。 二、问题: 客户要求,ID列的数据类型必须是uniqueidentifier,一开始实体类的ID设计成java.lang.String类型;映射文件中ID的增长方式是uuid.hex ...

    如何在SQL Server中使用随机记录集

    今天的文章,我想给你简单介绍下SQL Server里如何随机记录集。 SELECT * FROM Person.Person ORDER BY NEWID() GO 这会引入新的UNIQUEIDENTIFIER数据类型列,SQL Server会在那列上进行物理排序操作。 但是在记录...

    SQL Server2008 Order by在union子句不可直接使用的原因详解

    按照要求,每个取top 20,既然是随机的取,那么就SQL Server Order by newid()就是了,然后把所有数据union起来就得了。所以我立即给出了答案: selecttop 20 *fromxxxwheretype=1orderbynewid() union selecttop...

    sql 随机抽取几条数据的方法 推荐

    传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序里的时候就不管用了,总是那几条,于是对这个东西进行...

    SQL Server实现将特定字符串拆分并进行插入操作的方法

    本文实例讲述了SQL Server实现将特定字符串拆分并进行插入操作的方法。分享给大家供大家参考,具体如下: --循环执行添加操作 declare @idx as int While Len(@UserList) > 0 Begin Set @idx = Charindex(',', @...

    自动生成32位UUID的函数

    直接通过 dbo.[FunGetUUID32](NEWID())即可获取到32位UUID,非常简单方便。

    SQL2005工作经验

    case在where条件中的应用; SQL注入; 触发器的用法; 在SQL Server中使用CLR调用.NET方法;... 利用NEWID函数来取随机记录; 利用ROW_NUMBER方法分页; 在数据库中处理字符串数组; ......

    order by newid() 各种数据库随机查询的方法

    SQL Server: 代码如下:Select TOP N * From TABLE Order By NewID() view plaincopy to clipboardprint?Select TOP N * From TABLE Order By NewID() Select TOP N * From TABLE Order By NewID()NewID()函数将...

    随机提取Access/SqlServer数据库中的10条记录的SQL语句

    代码如下:本文相关代码如下:Access:select top n * from table order by rnd(id)’id为数据库的自动编号字段Sql Server:select top n * from table order by newid() 但在ASP+Access中,或许是因为缓存的原因,第...

    经典SQL语句大全

    在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名 14.如何修改数据库的名称: sp_renamedb '...

    SQLServer 循环批处理

    下面方法可以用来快速生成一批数据 if(object_id(‘t’) is not null) drop table t go create table t(id int identity(1,1),name varchar(40)) go insert into t(name) select newid() go 10 select * from t /* 1...

    经典全面的SQL语句大全

    随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)  对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决...

    C#写的 SQL Builders

    而对于想要返回MS Sql Server新增的纪录的整型id的可以(换成MSInsertBuilder ) MSInsertBuilder insertBuilder = new MSInsertBuilder(); insertBuilder.insertInto("Paper"); insertBuilder.value("name", "@...

Global site tag (gtag.js) - Google Analytics