浅淡sql如何随机取指定范围的数值

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、如果在数据库中我们想要随机取到两个数值之间的整数,我们可以这样处理
随机取1到3之间的整数:
select round(rand()*2+1.0,0)
go 10
随机取6到9之间的整数:
select round(rand()*3+6.0,0)
go 10
2、我们可以进行精度上的控制
--随机取n到m之间的数值
create table table_maco(id float)
go
declare @n int
declare @m int
declare @k int
set @n=8 --定义随机范围起点
set @m=10 --定义随机范围终点
set @k=1 --定义精度
insert into table_maco
select round(rand()*(@m-@n)+@n,@k)
go 10
select*from table_maco
drop table table_maco
--结果如下:
/*
id
----------------------
8.3
10.0
9.3
8.4
9.9
8.0
9.3
9.6
8.5
8.9
*/
3、我们也可以把它写成自定义函数
在自定义函数中,我们无法直接使用rand()这样的系统函数,但是我们可以用视图进行间接的使用。

go
create view dbo.vrand as select rand()as rr;
go
create function my_rand(@n int,@m int)
returns int
as
begin
declare @nn int
declare @mm int
set @mm=(select rr from dbo.vrand);
select @nn=round(@mm*(@m-@n)+@n,0);
return @nn
end
/*
select dbo.my_rand(1,6)
*/。

相关文档
最新文档