mysql newid函数,SQLSERVER中几个特殊函数(rand,checksum,newid)的用法

一、随机数: RAND

返回从 0 到 1 之间的随机数(float型)。

语法: RAND ([ seed ])

seed:提供种子值的整数表达式(tinyint、smallint 或 int)。如果未指定 seed,则 Microsoft SQL

Server 数据库引擎随机分配种子值。对于指定的种子值,返回的结果始终相同。

随机数是我们经常会用到的,几乎所有的语言都支持产生随机数。而且函数都差不多。例如在VBA和VB中也是用RAND,在C#中用RANDOM等等

查询语法:select rand();

二、校验和值:CHECKSUM

返回按照表的某一行或一组表达式计算出来的校验和值。CHECKSUM 用于生成哈希索引。

语法:CHECKSUM ( * | exp [ ,...n ] )

*:指定对表的所有列进行计算。如果有任一列是非可比数据类型,则 CHECKSUM 返回错误。非可比数据类型有

text、ntext、image、XML 和 cursor,还包括以上述任一类型作为基类型的 sql_variant。

exp :除非可比数据类型之外的任何类型的表达式。

返回值是int

CHECKSUM

对其参数列表计算一个称为校验和的哈希值。此哈希值用于生成哈希索引。如果 CHECKSUM 的参数为列,并且对计算的 CHECKSUM

值生成索引,则结果是一个哈希索引。它可用于对列进行等价搜索。

CHECKSUM 满足哈希函数的下列属性:在使用等于 =

运算符比较时,如果两个列表的相应元素具有相同类型且相等,则在任何两个表达式列表上应用的 CHECKSUM

将返回同一值。对于该定义,指定类型的 Null

值被作为相等进行比较。如果表达式列表中的某个值发生更改,则列表的校验和通常也会更改。但只在极少数情况下,校验和会保持不变。因此,我们不推荐使用

CHECKSUM 来检测值是否更改,除非应用程序可以容忍偶尔丢失更改。请考虑改用 HashBytes。指定 MD5

哈希算法时,HashBytes 为两个不同输入返回相同结果的可能性比 CHECKSUM 小得多。

表达式的顺序影响

CHECKSUM 的结果值。用于 CHECKSUM(*) 的列顺序是表或视图定义中指定的列顺序。其中包括计算列。

注:这个函数我用的不多。理解不深。但对于它可以把一个文本转换成一串数字的过程,感觉很有意思。

三、全局唯一编号:NEWID

创建 uniqueidentifier 类型的唯一值。

语法:select newid();

这个函数总是能返回一个新的GUID号码,它永远不会重复,而且毫无规律。

四、综合应用

实际使用中,这三个函数在一些场合下可以结合起来用。

--对查询数据进行随机排序

select top 10 *

from person

order by rand()*checksum(newid());

--查询newid()

select newid()

--将newid()转换成校验和哈希值

select checksum(newid())

--转换成随机值

select rand()*checksum(newid())

--转换成某一范围内的随机值

select ceiling(rand(checksum(newid()))*31535000)

--实现当前时间在一定范围内随机变化

select

dateadd(ss,ceiling(rand(checksum(newid()))*3600),getdate())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值