简单得说,Oracle 取随机数,大多是通过调用dbms_random包产生,通过dbms_random包产生随机数的方法大致有下面4种:
1、dbms_random.normal
创新互联专业成都网站建设、做网站,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、软文推广等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。
这个函数不带参数,用来产生一个介于-1到1之间的38位精度的随机数,能返回normal distribution的一个number类型,所以基本上随机数会在-1到1之间。
简单测试了一下,产生100000次最大能到5左右:
SQL> select dbms_random.normal from dual;
NORMAL -0.6940304577580136806344822459508580046783
2、dbms_random.random
这个也没有参数,返回一个从-power(2,31)到power(2,31) (--2的31次方)的整数值
3、dbms_random.value
这个函数分为两种,一种是没有参数,则直接返回0-1之间的38位精度的随机数
SQL > select dbms_random.value from dual; VALUE ----------------------------------------- 0 .58983014999643548701631750396301271752
第二种是加上两个参数a、b,则返回值在a、b之间的38位精度的随机数
SQL > select dbms_random.value(100,500) value from dual; VALUE ----------------------------------------- 412.150194612502916808701157054098274240
注意:无论前面几位,小数点之后都是38位
此外,若想获得整数:ROUND(dbms_random.value(1,500),0)
4、dbms_random.string
该函数产生一个随机字符串,必须带有两个参数,语法为:dbms_random.string(opt in CHAR,len in NUMBER)
参数len指定生成的字符串的长度(最大60);
参数opt指定生成的字符串的样式,允许的取值及其表示的含义如下表所示:
取值 | 含义 |
‘u’或’U’ | 返回一个由大写字母组成的字符串 |
‘l’或’L’ | 返回一个由小写字母组成的字符串 |
‘a’或’A’ | 返回一个由大写字母和小写字母组成的字符串 |
‘x’或’X’ | 返回一个由大写字母和数字组成的字符串 |
‘p’或’P’ | 返回一个由任意的可打印字符组成的字符串 |
例如:要产生一个长度为6且只包括大写字母的字符串,可以这样写: DBMS_RANDOM.STRING('U',6)
SQL> SELECT DBMS_RANDOM.string ('U', 6) FROM DUAL; DBMS_RANDOM.STRING('U',6) -------------------------------------- ECQALV
新闻标题:Oracle随机函数的用法
标题URL:http://lswzjz.com/article/igcioj.html