SqlServer中获取随机值

使用rand()函数

select rand()

输出

0.0329578509224172

rand()函数获取区间(0,1)之间的float类型的数,但不支持在查询中添加一列随机值

select rand(),* from rent_device

输出结果为

生成的随机数一样

使用checksum()函数和newid()函数

select newid()

输出

CCC6DD8A-C6D9-406E-8753-88FAECE53106

得到一个类似于java中UUID的唯一值

select checksum(1),checksum(-1),checksum('abc'),checksum(newid())

checksum()函数可以当做一个哈希函数

select convert(bigint,right(abs(checksum(newid())),9)) * 1.0 / 1000000000

newid()得到一个唯一值,checksum()将字符串哈希成一个数字,abs()取绝对值,right()取右边的后9位,convert()将字符串转换成bigint类型,运算之后得到

0.541767396000

可以达到rand()类似的效果,且支持添加一列随机值

select convert(bigint,right(abs(checksum(newid())),9)) * 1.0 / 1000000000 随机数,* from rent_device

输出为

参考

SQLServer随机数的获取

原文地址:https://www.cnblogs.com/strongmore/p/14915600.html