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/