`

oracle中使用DBMS_RANDOM去产生随机数

阅读更多
在测试过程中,经常要产生一些随机数,为此,oracle提供了DBMS_RANDOM
这个包去产生随机数挺好用的。下面小结下:

这个包有initialize()、seed()、terminate()、value()、normal()、random()、string()等几个函数
1)dbms_random.value
   没有参数,会返回一个具有38位精度的数值,范围从0.0到1.0,但不包括1.0,
比如:
for i in 1..10 loop
     dbms_output.put_line(round(dbms_random.value*100));
     end loop;


  如果带有上下限的,比如:
dbms_random.value(1,101) 则生成的为:将会生成下限到上限之间的数字,但不包含上限

2) dbms_random.string方法


Delect dbms_random.string('P',4 ) from dual ;
第一个参数含义如下
  u', 'U' - 返回大写字母
  'l', 'L' - 返回小写字母
'a', 'A' - 返回大小写混合字母
'x', 'X' - 大小写字母+数字混合
'p', 'P' -
P 表示 printable,即字符串由任意可打印字符构成
而第二个参数表示返回的字符串长度。

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

4)dbms_random.random 方法
   random返回的是BINARY_INTEGER类型值,产生一个任意大小的随机数
  与dbms_random.value 的区别举例:
   Order By dbms_random.value;
这条语句功能是实现记录的随机排序
另外:
dbms_random.value 和
dbms_random.random 两者之间有什么区别?
1。Order By dbms_random.value ,为结果集的每一行计算一个随机数,dbms_random.value 是结果集的一个列(虽然这个列并不在select list 中),然后根据该列排序,得到的顺序自然就是随机的啦。
2。看看desc信息便知道vlue和random这两个函数的区别了,value返回的是number类型,并且返回的值介于1和0之间,而random返回的是BINARY_INTEGER类型

5)生成随机日期
   Oracle将日期作为过去某个关键日期(如果你好奇的话,我可以告诉你这个日期是公元前4712年1月1日)的整数偏移量来保存。这就意味着你可以通过寻找与你希望的起始日期相对应的整数,然后向它加入一个随机的整数来随机生成一个指定范围内的日期。

使用TO_CHAR函数和‘J’格式代码,你可以为今天的日期生成一个内部日期数:

SELECT TO_CHAR(SYSDATE, 'J') FROM DUAL;

例如,要生成一个2012年内的任意日期,你可以首先确定2012年1月1日的日期整数;

SELECT TO_CHAR(TO_DATE('01/01/12','mm/dd/yy'),'J')FROM DUAL;

系统给的结果是2455928。所以要生成该年度内的任意日期,我们就要用带有low_value等于2455928和high_value等于2455928+365参数的DBMS_RANDOM.VALUE,再把它转换成日期:

SELECT TO_DATE(TRUNC(DBMS_RANDOM.VALUE(2455928,2455928+365)),'J') FROM DUAL;

6) 来个综合的例子:
  SELECT     LEVEL                                                       empl_id,
           MOD (ROWNUM, 50000)                                         dept_id,
           TRUNC (DBMS_RANDOM.VALUE (1000, 500000), 2)                 salary,
           DECODE (ROUND (DBMS_RANDOM.VALUE (1, 2)), 1, 'M', 2, 'F')   gender,
           TO_DATE (   ROUND (DBMS_RANDOM.VALUE (1, 28))
                    || '-'
                    || ROUND (DBMS_RANDOM.VALUE (1, 12))
                    || '-'
                    || ROUND (DBMS_RANDOM.VALUE (1900, 2010)),
                    'DD-MM-YYYY'
                   )                                                   dob,
           DBMS_RANDOM.STRING ('x', DBMS_RANDOM.VALUE (20, 50))        address
      FROM DUAL
CONNECT BY LEVEL < 10000;
3
1
分享到:
评论
1 楼 mengxiangfeiyan 2012-10-05  
  好啊

相关推荐

    DBMS_RANDOM.VALUE OR DBMS_RANDOM.STRING

    在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...

    Oracle里取随机数的几种具体的方法

    除了使用 DBMS_RANDOM 包外,还有其他方法可以生成随机数,例如使用 Oracle 的内置函数、使用 PL/SQL 语言等。这些方法可以根据实际情况选择。 Oracle 提供了多种方法来生成随机数,每种方法都有其优缺点,选择合适...

    Oracle随机函数之dbms_random使用详解

    在性能测试中,可以使用`dbms_random.value`来生成随机负载;在安全测试中,`dbms_random.string`可用于创建不可预测的密码或ID。在数据分析中,`dbms_random.normal`可以帮助模拟符合正态分布的变量,以测试统计...

    ORACLE随机数DBMS_RANDOM包

    Oracle数据库中的DBMS_RANDOM包是一个非常实用的工具,它提供了生成随机数和随机字符串的功能,广泛应用于各种场景,包括测试、模拟数据生成等。本文将详细介绍DBMS_RANDOM包的四个主要函数及其用法。 1. **dbms_...

    Oracle插入随机数

    这里使用了`DBMS_RANDOM.VALUE()`函数生成一个0到1之间的随机数,并通过比较判断返回0或1。 ```sql CREATE OR REPLACE FUNCTION F_Random_ZeroOrOne(in_text IN NUMBER) RETURN NUMBER IS BEGIN IF in_text &gt; 0.75...

    Oracle里抽取随机数的多种方法

    首先,我们可以使用 Oracle 自带的 dbms_random 程序包来生成随机数。dbms_random 是一个 PL/SQL 包,位于 $ORACLE_HOME/rdbms/admin/dbmsrand.sql 目录下。为了使用该包,我们需要先在 sys 用户下编译该文件,即...

    oracle中随机数的获取

    总的来说,Oracle的DBMS_RANDOM包提供了丰富的功能,能够满足大部分在SQL中生成随机数的需求。通过熟练掌握这些函数,你可以根据业务需要灵活地生成各种类型的随机数,从而提升数据处理的多样性和真实性。记得在实际...

    Oracle系统包详细使用方法

    dbms_random提供随机数生成功能,常用于测试和模拟。 dbms_logmnr(Log Miner)工具允许分析归档日志,以获取历史数据库活动的详细信息。dbms_flashback提供闪回功能,用于恢复到过去的数据库状态。dbms_...

    Oracle中如何生成随机数字、随机字符串、随机日期.docx

    Oracle 中生成随机日期可以通过 `DBMS_RANDOM.VALUE` 结合日期转换函数实现。首先,你可以使用 `TO_CHAR(SYSDATE, 'J')` 得到当前日期的基数(内部日期数),然后在一定范围内生成一个随机数并转换回日期。例如: ``...

    oracle取随机数

    在Oracle数据库环境中,生成随机数是一项常见且实用的操作,它被广泛应用于数据模拟、测试、安全性和数据分析等领域。本文将深入探讨如何在Oracle中生成不同类型的随机数,包括字符型、数值型以及GUID,旨在为数据库...

    Oracle中如何生成随机数字、随机字符串、随机日期.pdf

    如果你需要从正态分布中获取随机数,可以使用`dbms_random.normal`函数。这个函数返回的是标准正态分布(均值为0,标准差为1)的随机数。若需调整均值和标准差,可以进行相应的转换。 5. 随机生成日期: Oracle...

    Oracle如何实现从特定组合中随机读取值

    DBMS_RANDOM是Oracle提供的一组实用程序,用于生成随机数,这对于模拟、测试或者在数据库中创建随机数据非常有用。在这个场景下,我们将主要用到`DBMS_RANDOM.RANDOM`函数。 `DBMS_RANDOM.RANDOM`函数返回一个在0...

    Oracle中如何用一条SQL快速生成10万条测试数据.txt

    `DBMS_RANDOM`包提供了生成随机数的功能,这里我们使用`DBMS_RANDOM.VALUE(0,100)`来生成介于0到100之间的随机整数。这个随机数可以用作业务逻辑中的各种统计或者概率计算。 #### 5. 使用`DBMS_RANDOM.STRING`生成...

    Oracle 随机数

    总的来说,Oracle的DBMS_RANDOM包提供了一套强大的工具,可以满足你在数据库中生成随机数和选取随机记录的各种需求。在使用过程中,记得关注性能优化和数据库的最佳实践,以确保操作的高效性和准确性。

    Oracle中如何用一条SQL快速生成10万条测试数据

    `dbms_random`是Oracle提供的包,包含了一系列随机数生成函数,`value`函数可以生成指定范围内的随机数。通过`trunc`函数,我们可以将其转换为整数。 #### 4. **随机字符串生成** `dbms_random.string('x',20)`...

    利用ORACLE实现数据的抽样

    在Oracle中,可以通过使用`SYS_GUID()`或`DBMS_RANDOM`包来实现随机排序,从而达到随机抽样的目的。例如: ```sql SELECT * FROM (SELECT * FROM TB_PHONE_NO ORDER BY SYS_GUID()) WHERE ROWNUM ; ``` 此语句将从`...

    Oracle 8i Supplied PL/SQL Packages Reference

    - **示例**:使用`DBMS_XMLGEN.GETXML`可以基于数据库中的表生成XML数据。 #### 五、结语 通过学习《Oracle 8i Supplied PL/SQL Packages Reference》,DBA和开发人员可以更好地利用Oracle 8i提供的各种内置工具...

    数据库中要产生随机整数的方法

    4. **Oracle中的DBMS_RANDOM.RANDOM**: Oracle数据库提供DBMS_RANDOM包,其中的RANDOM函数可以生成整数。例如,生成1到100的随机数: ```sql SELECT DBMS_RANDOM.VALUE(1, 100) AS RandomNumber FROM DUAL; ```...

Global site tag (gtag.js) - Google Analytics