`
yiyeqinghuasoon
  • 浏览: 649263 次
文章分类
社区版块
存档分类
最新评论

浅淡sql如何随机取指定范围的数值--【叶子】

 
阅读更多

1、如果在数据库中我们想要随机取到两个数值之间的整数,我们可以这样处理

随机取1到3之间的整数:

select round(rand()*2+1.0,0)

go 10

随机取6到9之间的整数:

select round(rand()*3+6.0,0)

go 10

2、我们可以进行精度上的控制

--随机取nm之间的数值

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)

*/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics