SQL server 数据库字段自动生成20位的随机数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL server 数据库字段自动生成20位的随机数相关的知识,希望对你有一定的参考价值。

参考技术A 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之间。
参考技术B 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)
参考技术C 给你一个思路:
如果一个表中有省份字段和城市字段就比较好办:
首先用RS.RecordCount读取数据表的记录数,然后用随机函数生成一个随机数,这个随机数必须小于或等于数据表的总记录数,假如随机数的变量是:X,那么:
RS.Open "Select * From 数据表名 where ID=" & X & "", conn, 2 , 2
注意:数据表中ID字段(自动编号)必须是连续的!!
参考技术D 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)
第5个回答  2010-12-23 select user_no,dbo.mydata(1后面19个0,20个9) number from table_name;

SQL Server 在查询结果增加自定义的三个字段?如何搞?

如图所示:

我现在需要在图中的SQL的查询结果中,增加图中三个自定义的列:Precipitation12Hours、Precipitation24Hours、Precipitation72Hours;
这三个列分别表示:
Precipitation12Hours:12个小时Precipitation之和。该站点(StationId),从此刻(ObservTimes)到以后的12小时之间Precipitation值之和。例如,第一个,2015092217时,2015/09/22 17:00:00到2015092304时,2015/09/23 04:00:00的Precipitation之和为:0;
第二个,2015092218到2015092305的Precipitation之和为0.3;以此类推。
Precipitation24Hours:计算方式与Precipitation12Hours相似,这个是计算24小时Precipitation之和。
Precipitation72Hours:计算方式与Precipitation12Hours相似,这个是计算72小时Precipitation之和。
其中,StationId表示站点ID,ObservTimes表示时间。

请问上述需求如何解决?

参考技术A

在后面加上如下语句:


( select sum(sh.Precipitation) from StationAwsh1 f 
  where f.StationId = sh.StationId
        and f.ObservTimes Between sh.ObservTimes and 
          replace(replace(convert(varchar(13),dateadd(hh,12,cast(left(sh.ObservTimes,8) + ' ' + right(sh.ObservTimes,2) + ':00' as datetime)),120),'-',''),' ','')
          ) as Pre12H,
( select sum(sh.Precipitation) from StationAwsh1 f 
  where f.StationId = sh.StationId
        and f.ObservTimes Between sh.ObservTimes and 
          replace(replace(convert(varchar(13),dateadd(hh,24,cast(left(sh.ObservTimes,8) + ' ' + right(sh.ObservTimes,2) + ':00' as datetime)),120),'-',''),' ','')
          ) as Pre24H,
( select sum(sh.Precipitation) from StationAwsh1 f 
  where f.StationId = sh.StationId
        and f.ObservTimes Between sh.ObservTimes and 
          replace(replace(convert(varchar(13),dateadd(hh,72,cast(left(sh.ObservTimes,8) + ' ' + right(sh.ObservTimes,2) + ':00' as datetime)),120),'-',''),' ','')
          ) as Pre72H

本回答被提问者和网友采纳

以上是关于SQL server 数据库字段自动生成20位的随机数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sql server 中定位自由文本字段中的 16 位数字字符串?

SQL Server 在查询结果增加自定义的三个字段?如何搞?

SQL server数据库统计指定字段符合数组中指定个数的SQL语句写法

SQL server怎么在更新数据的时候让字段自动加1,

在sql server2000中,如何把整型字段转换成字符串型字段?

sql server去掉某个字段前后空格问题