SQL server 数据库字段自动生成20位的随机数
2010-12-23
展开全部
SELECT DBMS_RANDOM.RANDOM FROM DUAL;
产生一个任意大小的随机数
SELECT ABS(MOD(DBMS_RANDOM.RANDOM,100)) FROM DUAL;
产生一个100以内的随机数
SELECT TRUNC(100+900*dbms_random.value) FROM dual;
产生一个100~1000之间的随机数
SELECT dbms_random.value FROM dual;
产生一个0~1之间的随机数
SELECT dbms_random.value(10,20) FROM dual;
产生一个10~20之间的随机数
SELECT dbms_random.normal FROM dual;
NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。
产生一个任意大小的随机数
SELECT ABS(MOD(DBMS_RANDOM.RANDOM,100)) FROM DUAL;
产生一个100以内的随机数
SELECT TRUNC(100+900*dbms_random.value) FROM dual;
产生一个100~1000之间的随机数
SELECT dbms_random.value FROM dual;
产生一个0~1之间的随机数
SELECT dbms_random.value(10,20) FROM dual;
产生一个10~20之间的随机数
SELECT dbms_random.normal FROM dual;
NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
20位要精确很难,所以用nvarchar来做了并把前面的0去了,用多个rand()结果连接起来的.
我只做个变量,这个结果你爱用哪里就用哪里吧.
declare @rnd nvarchar(50)
set @rnd =''
while LEN(@rnd)<20
begin
set @rnd =@rnd + REPLACE ( CONVERT(nvarchar, RAND ()),'0.','')
while LEFT(@rnd,1)='0'
set @rnd = RIGHT (@rnd,len(@rnd)-1)
end
set @rnd=LEFT(@rnd ,20)
我只做个变量,这个结果你爱用哪里就用哪里吧.
declare @rnd nvarchar(50)
set @rnd =''
while LEN(@rnd)<20
begin
set @rnd =@rnd + REPLACE ( CONVERT(nvarchar, RAND ()),'0.','')
while LEFT(@rnd,1)='0'
set @rnd = RIGHT (@rnd,len(@rnd)-1)
end
set @rnd=LEFT(@rnd ,20)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你一个思路:
如果一个表中有省份字段和城市字段就比较好办:
首先用RS.RecordCount读取数据表的记录数,然后用随机函数生成一个随机数,这个随机数必须小于或等于数据表的总记录数,假如随机数的变量是:X,那么:
RS.Open "Select * From 数据表名 where ID=" & X & "", conn, 2 , 2
注意:数据表中ID字段(自动编号)必须是连续的!!
如果一个表中有省份字段和城市字段就比较好办:
首先用RS.RecordCount读取数据表的记录数,然后用随机函数生成一个随机数,这个随机数必须小于或等于数据表的总记录数,假如随机数的变量是:X,那么:
RS.Open "Select * From 数据表名 where ID=" & X & "", conn, 2 , 2
注意:数据表中ID字段(自动编号)必须是连续的!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
declare @a varchar(20)
declare @b varchar(20)
set @a=convert(varchar(20),convert(dec(30,0),rand()*1000000000000000))
set @b=convert(varchar(20),convert(dec(30,0),rand()*1000000000000000))
select left(@a,10)+left(@b,10)
declare @b varchar(20)
set @a=convert(varchar(20),convert(dec(30,0),rand()*1000000000000000))
set @b=convert(varchar(20),convert(dec(30,0),rand()*1000000000000000))
select left(@a,10)+left(@b,10)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select user_no,dbo.mydata(1后面19个0,20个9) number from table_name;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询