用法1:
返回一个具有38位精度的数值,范围从0.0到1.0,但不包括1.0:
select dbms_random.value from dual;
用法2:
生成下限到上限之间的数字,但不包含上限,依然返回38位精度的数值:
select dbms_random.value(1,100) from dual;
用法3:
验证38位精度:
select to_char(dbms_random.value(1,100),
'99.0000000000000000000000000000000000000000')
from dual;
用法4:
按照一定规则,生成随机字符串:
opt:
‘u’, ‘U’ - 返回随机大写字母字符串;
‘l’, ‘L’ - 返回随机小写字母字符串;
‘a’, ‘A’ - 返回随机混合的大小写字母字符串;
‘x’, ‘X’ - 返回随机混合的大写字母和数字字符串;
‘p’, ‘P’ - 返回随机混合的特殊字符和大小写字母以及数字字符串。
len:返回的字符串长度。
select dbms_random.string('u',8) from dual;
select dbms_random.string('L',8) from dual;
select dbms_random.string('a',8) from dual;
select dbms_random.string('X',8) from dual;
select dbms_random.string('p',8) from dual;
用法5:
返回以二进制形式存储的正负整数数字,运算的效率高于number:
select dbms_random.random from dual connect by level <= 10;
用法6:
返回正态分布的一组数的随机数。此正态分布标准偏差为1,期望值为0,
返回的数值68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间:
select dbms_random.normal from dual connect by level <= 10;
用法7:
返回一组固定的随机数,用于测试:
BEGIN
dbms_random.seed('test');
FOR i IN 1 .. 5 LOOP
dbms_output.put_line(dbms_random.value);
END LOOP;
END;
/
-- 不同库上,不同用户或者不同会话,dbms_random.value 生成的随机数是一样的
-- 如果想生成不同的随机数,则要更换 dbms_random.seed('test') 的参数名字
-- 个人理解:oracle根据seed参数生成一组一样的随机数,在不同环境下保持一致。
[TOC]