用sql server生成随机数

我想把table1表中的number1字段中所有的值改成1000-9999之间的随机数,可以用SQL语句实现吗?(可能有几百条记录)所有的值不要重复,重复两三值没有关系。... 我想把table1表中的number1字段中所有的值改成1000-9999之间的随机数,可以用SQL语句实现吗?(可能有几百条记录)

所有的值不要重复,重复两三值没有关系。
展开
 我来答
dongfanghong_1
2007-12-29 · TA获得超过363个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:304万
展开全部
--创建视图
create view myview as select re=rand()

--自定义函数:取得指定范围的随机数
create function mydata(
@a int,
@b int)
returns decimal(38,0)
as
begin
declare @r decimal(38,0)
select @r=cast(re*(@b-@a)+@a as decimal(38,0)) from myview
return(@r)
end
go

--调用(可以随意指定你要的数据范围)
select user_no,dbo.mydata(1000,9999) number from table1

--可以在你原来的查询基础上增加一列number,如不增加列,
--那就把上面的结果放入一个临时表 #a,然后update
--如:
update table1 set number1=a.number from #a a,table1 b where a.user_no=b.user_no
liufei8802
2007-12-25
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
好了..

------------------------------
create view v_RAND
as
select re=stuff(rand(),1,2,'')
go

create function f_RANDBH(@BHLen int)
returns varchar(50)
as
begin
declare @r varchar(50)
if not(isnull(@BHLen,0) between 1 and 50)
set @BHLen=10

lb_bh:
select @r=re from v_RAND
while len(@r)<@BHLen
select @r=@r+re from v_RAND
set @r=left(@r,@BHLen)

if exists(select * from '表名' with(xlock,paglock) where number1=@r)
goto lb_bh

return(@r)
end
go
-----------------
准备工作好了

你的number1的默认值设为:dbo.f_RANDBH(4) 这个根据你需要设随机数个数 char() 类型

------------
应该没问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夫梦毕安阳
2019-06-05 · TA获得超过1259个赞
知道小有建树答主
回答量:1246
采纳率:100%
帮助的人:5.5万
展开全部
rand()
定义:
返回从0到1之间的随机浮点值。
举例说明:
select
rand() as 随机数
结果如图:
select
cast( floor(rand()*n) as
int )
--方法1
结果:20
select
cast(
ceiling(rand()*n)
as
int
)
--方法2
结果:43
大致一看,这两种方法没什么区别,区别就是他们的生成随机数的范围:
方法1的数字范围:0至n-1之间,如cast(
floor(rand()*100)
as
int)就会生成0至99之间任一整数
方法2的数字范围:1至n之间,如cast(ceiling(rand()
*
100)
as
int)就会生成1至100之间任一整数
比较
ceiling

floor
ceiling
函数返回大于或等于所给数字表达式的最小整数。floor
函数返回小于或等于所给数字表达式的最大整数。
  例如,对于数字表达式
12.9273,ceiling
将返回
13,floor
将返回
12。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式