http://blog.csdn.net/jie8991/article/details/5327145
ORACLE 如何产生一个随机数
ORACLE 如何产生一个随机数:DBMS_RANDOM
--1、小数( 0 ~ 1)
select dbms_random.value from dual ;
--2、指定范围内的小数 ( 0 ~ 100 )
select dbms_random.value(0,100) from dual ;
--3、指定范围内的整数 ( 0 ~ 100 )
select trunc(dbms_random.value(0,100)) from dual ;
--4、长度为20的随机数字串
select substr(cast(dbms_random.value as varchar2(38)),0,10) from dual ;
--5、正态分布的随机数
select dbms_random.normal from dual ;
--6、随机字符串
select dbms_random.string('x', 3) from dual ;
/* opt可取值如下:
'u','U' : 大写字母
'l','L' : 小写字母
'a','A' : 大、小写字母
'x','X' : 数字、大写字母
'p','P' : 可打印字符*/
--7、随机日期
select to_date(2454084+TRUNC(DBMS_RANDOM.VALUE(0,365)),'J') from dual ;
/* 通过下面的语句获得指定日期的基数*/
select to_char(sysdate,'J') from dual ;
--8、生成GUID
select sys_guid() from dual ;
--生成带分隔符(-)的GUID的自定义函数
--create or replace function my_guid
return varchar2
is
guid varchar(36);
temp varchar(32);
begin
temp:=sys_guid();
guid:= substr(temp,1,8) || '-'
||substr(temp,9,4) || '-'
||substr(temp,13,4)|| '-'
||substr(temp,17,4)|| '-'
||substr(temp,21,12);
return guid;
end;
1.准备工作
login sqlplus as sys
then run the script
$ORACLE_HOME/RDBMS/ADMIN/dbmsrand.sql
2.应用举例
SELECT DBMS_RANDOM.RANDOM FROM DUAL;
再进一步的要求,比如,产生一个0-100的随机数,稍微变通一下就可以了:
select abs(mod(dbms_random.random,100)) from dual
3.进阶说明
dbms_random又有新函数了可以实现这些功能
FUNCTION value RETURN NUMBER;
FUNCTION value (low IN NUMBER, high IN NUMBER) RETURN NUMBER;
FUNCTION normal RETURN NUMBER;
FUNCTION string (opt char, len NUMBER) RETURN VARCHAR2;
产生N到M之间的随机数
SELECT DBMS_RANDOM.VALUE(N,M) FROM DUAL;
缺省DBMS_RANDOM.VALUE返回0到1之间的随机数
NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。
最后,是STRING函数。它返回一个长度达60个字符的随机字符串。
用DBMS_RANDOM生成文本和日期值
作者: Bob Watkins
2006-06-09 04:51 PM
数字、文本字符串和日期都是用户会在表格里碰到的三种常见数据类型。虽然你可以用PL/SQL程序包里的DBMS_RANDOM随机生成数字——它确实能够做到这一点——它还能够随机生成文本和日期值。
1.产生随机数字
就让我们先从数字开始。VALUE函数会返回一个大于等于0但是小于1的数,精度是38位。
SELECT DBMS_RANDOM.VALUE FROM DUAL;
对于指定范围内的整数,要加入参数low_value和high_value,并从结果中截取小数(最大值不能被作为可能的值)。所以对于0到99之间的整数,你要使用下面的代码:
SELECT TRUNC(DBMS_RANDOM.VALUE(0, 100)) FROM DUAL;
2.产生随机文本字符串
要随机生成文本字符串,就要使用STRING函数并编写代码指定字符串的类型和所希望的长度:
SELECT DBMS_RANDOM.STRING('A', 20) FROM DUAL;
类型代码在《Oracle Database 10g PL/SQL程序包和类型参考(Oracle Database 10g PL/SQL Packages and Types Reference)》有说明。
下面是一些类型的代码:
‘U’用来生成大写字符
‘L’用来生成小写字符
‘A’用来生成大小写混合的字符
3.产生随机日期
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;
列表A:
SQL> CREATE TABLE random_stuff (
2 id NUMBER,
3 date1 DATE,
4 text1 VARCHAR2(40)
5 );
Table created.
SQL> INSERT INTO random_stuff
2 SELECT
3 ROWNUM,
4 TO_DATE(TRUNC(DBMS_RANDOM.VALUE(2452641,2452641+364)),'J'),
5 DBMS_RANDOM.STRING('A',TRUNC(DBMS_RANDOM.VALUE(6,41)))
6 FROM user_objects
7 WHERE ROWNUM < 101;
100 rows created.
SQL> commit;
Commit complete.
SQL> SELECT *
2 FROM random_stuff
3 WHERE ROWNUM < 11;
ID DATE1 TEXT1
---------- --------- ----------------------------------------
1 21-JAN-03 gAwQdhHSLBnu
2 28-SEP-03 cESSyTtblabklMGznSHj
3 22-NOV-03 nrnsGZCniTY
4 05-FEB-03 WCrFojHkic
5 10-SEP-03 vlSliCaNQxZsBHbvKfiGnEMoXarR
6 13-JUN-03 UnYLsIFOvkVezXJTByOpqVgwVSLKDFvvApIR
7 02-JAN-03 WXffJhdxXN
8 03-OCT-03 QimEpqGkVvNBJvZdwzegqgeYXUSEKJE
9 14-JUL-03 pJlmGZeNNIfSEJFgIdNuRKnCFIzzLMOlXmvC
10 24-DEC-03 JNnLJlndDcv
10 rows selected.列表A把上面的代码集中到了一起。它创建了一个叫做random_stuff的示例表格,这个表格有三个数据列:ID、date1和text1。它然后联合使用 ROWNUM和DBMS_RANDOM生成数据,在里面插入100个数据行。你可以使用任意至少带有100个数据行的表格进行子查询,因为真正表格里的数据列都不在SELECT列表里。
分享到:
相关推荐
Oracle中如何生成随机数字、随机字符串、随机日期 详细实例脚本。
Oracle数据库中的DBMS_RANDOM包是一个非常实用的工具,它提供了多种生成随机数和随机字符串的方法,广泛应用于数据填充、测试场景模拟以及各种需要随机性的应用中。以下将详细讲解DBMS_RANDOM包中的主要函数和其使用...
`ROWNUM`是Oracle中的一个伪列,它为每一行返回一个唯一的行号。在这个场景下,我们将`ROWNUM`用作新表中的唯一标识符(`ID`)。 #### 3. 生成递增日期时间字段 为了模拟真实场景中的日期时间数据,我们使用`...
ORACLE经典语句汇总 -- 字符串左填充和右填充,默认填充空格 ...-- 把SELECT出来的结果导到一个文本文件中 -- 查询新建用户 -- 查询那些用户,操纵了那些表造成了锁机 --看锁阻塞的方法 --ORACLE获得系统信息
在这个游戏中,计算机生成一个随机数,然后用户需要猜测这个数字是更高还是更低。下面将详细讨论这个游戏的实现,主要聚焦于使用Java编程语言进行开发。 首先,我们要了解Java语言的基础。Java是一种面向对象的、跨...
1. **生成区码**:在0x81到0xFE之间随机选择一个值作为区码。可以使用C#等语言的Random类生成随机数,并将其转换为对应的十六进制值。 2. **生成位码**:同样,我们需要在0x40到0xFE之间随机生成一个位码。同样的...
Oracle提供了一个内置的随机数生成函数`DBMS_RANDOM.RANDOM`,用于生成随机数。例如: ```sql SELECT DBMS_RANDOM.RANDOM AS random_number FROM dual; ``` #### 33. Linux下查询磁盘竞争状况命令? 在Linux下,...
1. **主函数**:`main`方法作为程序的入口点,创建了一个`Random`对象,并生成了一个随机数,然后调用`isPrime`方法判断该数是否为质数并打印结果。 2. **质数判断方法**:`isPrime`方法实现了上述提到的质数判断...
Oracle大数据量数据生成器,Data_Generator,是一个实用工具,用于快速生成大量模拟真实的数据,这对于测试数据库性能、填充示例数据库或者进行数据仓库建模非常有用。在Oracle环境中,生成大量的测试数据可以帮助...
如果需要一次性生成多行随机数,可以将上述SQL语句嵌入到一个SELECT语句中,配合其他表或使用WITH语句生成虚拟表。 8. **随机选择特定数量的记录**: 结合ORDER BY RAND()或ORDER BY RANDOM()(根据数据库类型)...
产生一个随机数是指使用随机数生成器生成一个随机数字。 8. 猜拳游戏 猜拳游戏是指使用随机数生成器生成一个随机数字,用于模拟猜拳游戏。 9. while 循环 while 循环是一种循环结构,用于重复执行某个操作直到...
由于在SQL语句中,调用一次伪随机函数只能得到一个随机数,因此需要对伪随机函数进行相应的扩展,使其能够生成多个随机数。具体做法可以通过线性记录编号来进行改造。具体的技术细节未在摘要中提及,但算法的构建...
"SQL主键产生器"就是这样一个工具,它能帮助我们在创建或更新表时自动为主键字段生成唯一值。 SQL主键产生器通常有以下几种实现方式: 1. **序列(Sequences)**:在某些数据库系统如Oracle中,可以创建序列对象来...
- **实现方式**:初始化一个数组存储已抽取的牌,每次随机选择一个位置并将该位置的牌添加到玩家手中。 **示例代码片段**: ```cpp int data[54], hand[21]; // 假设每手牌最多21张 int test = 54, t = 0; for(int...
DataFactory 工具介绍 DataFactory 是一款强大的数据构造工具,支持 DB2、Oracle、Sybase、SQL Server 等...DataFactory 是一个强大的数据构造工具,可以快速制造多张表的百万行有意义的测试数据,满足测试的需求。
【JAVA课程大作业】是一个基于Java编程语言的项目,旨在教授和锻炼学生对Java基础知识的掌握,特别是面向对象编程和GUI(图形用户界面)设计。这个大作业要求创建一个游戏,游戏规则类似于经典的火柴游戏:系统随机...
- `/dev/urandom` 是一个非阻塞随机数生成器,它重复使用熵池中的数据以产生伪随机数据。虽然其生成的随机数据质量略低于`/dev/random`,但由于是非阻塞式的,因此在性能方面表现更佳。 2. **JDK Bug** - 即使...
该项目基于RuoYi框架构建,RuoYi是一个开源的Java快速开发平台,旨在简化企业级应用的开发过程。通过使用RuoYi,开发者可以快速构建出稳定且高效的应用系统。在这个风电场监控项目中,我们看到RuoYi被用作基础架构,...
例如,`java.util.Function`接口代表了一个接受一个输入参数并产生一个输出的函数。 在类型推断方面,Java 8的改进使得编译器可以更智能地推断局部变量的类型,从而减少了显式的类型声明。这在使用Lambda表达式时...
CONNECT_BY是Oracle提供的一个强大工具,用于执行层次查询。通过定义父节点和子节点之间的关系,可以轻松地构建出树形结构的数据。 - **Oracle用法**:使用`CONNECT BY PRIOR`子句来指定层次关系。 - **CONNECT_BY...