DBMS_RANDOM包(随机数)

http://xserver.iteye.com/blog/724013
http://apps.hi.baidu.com/share/detail/831580

dbms_random包用来产生随机的数字、字符、日期

1.dbms_random.normal
 随机产生一个数字,该数字符合分布,以0为中心,此正态分布标准偏差为1,期望值为0。这个函数返回的 数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。
SQL> select dbms_random.value from dual;
 
     VALUE
----------
0.57712591
 

2.dbms_random.value
 随机产生一个数字,有两种用法。不带参数,返回一个随机数字(大于等0但小于1的小字,精度为38位)
SQL> select dbms_random.value from dual;
 
     VALUE
----------
0.98589979
 带参数的dbms_random(a,b)(aSQL> select dbms_random.value(10,20) from dual;
 
DBMS_RANDOM.VALUE(10,20)
------------------------
        10.1425145711046

3.dbms_random.random
返回一个从-power(2,31)到power(2,31)的整数值
SQL> select dbms_random.random from dual;
 
    RANDOM
----------
-163727831

4.dbms_random.string(type,length)
产生一个随机字符串,type表示字段的类型,length表示字符的长度。type的取值如下:
    'u','U'  :  upper case alpha characters only   --产生大写的字母
    'l','L'  :  lower case alpha characters only   --产生小写的字母
    'a','A'  :  alpha characters only (mixed case) --产生大小写混合的字母
    'x','X'  :  any alpha-numeric characters (upper) --产生字母和数字的混合,字母大写
    'p','P'  :  any printable characters             --产生任意能打印出来的字符
如果type不是以上字符,则产生一个随机的字母序列,长度为LENGTH指定的长度。

5.生成一个随机的日期

Oracle将日期作为过去某个关键日期(如果你好奇的话,我可以告诉你这个日期是公元前4712年1月1日)的整数偏移量来保存(即把日期保存为一个数字)。这就意味着你可以通过寻找与你希望的起始日期相对应的整数,然后向它加入一个随机的整数来随机生成一个指定范围内的日期。
先找到日期对应的内部整数,用格式'J':select to_char(sysdata,'J') from dual;
例如,要生成一个2003年内的任意日期,你可以首先确定2003年1月1日的日期整数:
SELECT TO_CHAR(TO_DATE('01/01/03','mm/dd/yy'),'J')FROM DUAL;
系统给的结果是2452641。所以要生成该年度内的任意日期,我们就要用带有low_value等于2452641和high_value等于2452641+364参数的DBMS_RANDOM.VALUE,再把它转换成日期:
SELECT TO_DATE(TRUNC(DBMS_RANDOM.VALUE(2452641,2452641+364)),'J') FROM DUAL;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24478467/viewspace-709693/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24478467/viewspace-709693/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值