oracle随机函数比较,【Oracle】Oracle随机函数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

【问题】

Oracle提供的一个随机函数包dbms_random,用于获取随机数,现详细介绍一些dbms_random包函数的使用说明。

【处理】

1、dbms_random.random

生产一个随机数:

select dbms_random.random from dual;

SQL> select dbms_random.random from dual;

RANDOM

----------

1999546697

产生一个0-100的随机,稍微变通一下:

Select abs(mod(dbms_random.random,100))from dual

SQL> Select abs(mod(dbms_random.random,100))from dual;

abs(mod(dbms_random.random,100))

----------

87

2、dbms_random.value

生成一个大于等于0,小于等于1的38位小数:

select dbms_random.value from dual;

SQL> select dbms_random.value from dual;

VALUE

----------

0.760963315016215

生成一个指定范围内的数

select dbms_random.value(100,0) from dual;

SQL> select dbms_random.value(100,0) from dual;

DBMS_RANDOM.VALUE(100,0)

------------------------

59.3486382016502

3、dbms_random.normal,此函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间

selectdbms_random.normal from dual;

SQL> selectdbms_random.normal from dual;

NORMAL

----------

-1.7330759

4、dbms_random.string,随机生成文本字符串,STRING函数需指定字符串的类型和所希望的长度

1、SELECT DBMS_RANDOM.STRING('A', 20) FROM DUAL;

SQL> selectdbms_random.normal from dual;

DBMS_RANDOM.STRING('A', 20)

----------

chRTItskYhMFJvwOwPcy

说明:’U’用来生成大写字符、‘L’用来生成小写字符、‘A’用来生成大小写混合的字符

5、产生随机日期

Oracle将日期作为过去某个关键日期(告诉你这个日期是公元前4712年1月1日)的整数偏移量来保存,这就意味着你可以通过寻找与你希望的起始日期相对应的整数,然后向它加入一个随机的整数来随机生成一个指定范围内的日期。使用TO_CHAR函数和‘J’格式代码,你可以为今天的日期生成一个内部日期数:

SELECT TO_CHAR(SYSDATE, '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,再把它转换成日期:

SELECTTO_DATE(TRUNC(DBMS_RANDOM.VALUE(2452641,2452641+364)),'J') FROM DUAL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值