ORACLE 随机数相关问题

本文介绍了Oracle数据库中生成各种类型随机数的方法,包括在特定数值范围内生成整数、生成随机字符串、获取过去一段时间内的随机日期等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 随机数包 
SELECT DBMS_RANDOM.VALUE 
  FROM DUAL; 

2. 在[0..100]范围内取随机数 
SELECT TRUNC (DBMS_RANDOM.VALUE (0, 100)) 
  FROM DUAL; 

3. 大于字符‘A’的10个字符随机字符串 
SELECT DBMS_RANDOM.STRING (’A’, 10) 
  FROM DUAL; 

4. 单个小写随机字符 
SELECT CHR (ROUND (DBMS_RANDOM.VALUE (97, 122))) 
  FROM DUAL; 

5. 在过去10天内取随机日期 
SELECT TO_DATE (TRUNC (DBMS_RANDOM.VALUE (TO_NUMBER (TO_CHAR (SYSDATE - 10, 
                                                              ’J’ 
                                                             ) 
                                                    ), 
                                          TO_NUMBER (TO_CHAR (SYSDATE, ’J’)) 
                                         ) 
                      ), 
                ’J’ 
               ) 
  FROM DUAL; 
  
6. 在过去30分钟内取随机时间 
SELECT (SYSDATE - 1 / 24 / 60 * 30) + DBMS_RANDOM.VALUE (1, 1800) / 3600 / 24 
  FROM DUAL;

 

 

7.在2010年7月1日---2011年3月8日之间,任取一个随机值;

 

SELECT TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_NUMBER(TO_CHAR(to_date('20100701010101','yyyy-mm-dd hh24:mi:ss'), 'J')),
                                       TO_NUMBER(TO_CHAR(to_date('20110308010101','yyyy-mm-dd hh24:mi:ss'), 'J')))),
               'J')
  FROM DUAL;

 

8.2010年7月1日以后的240天内随机取一个值

 

select to_date('20100701010101','yyyy-mm-dd hh24:mi:ss') + dbms_random.value(1,240) from dual;

 

9.产生随机日期
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,再把它转换成日期:

SELECT TO_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、付费专栏及课程。

余额充值