您的位置:首页 > 数据库 > Oracle

Oracle dbms_random 随机函数用法简单摘录

2018-01-08 11:36 495 查看

用法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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: