• 技术文章 >数据库 >mysql教程

    Oracle随机函数之dbms_random使用详解

    2016-06-07 17:55:48原创649

    dbms_random是oracle提供的一个随机函数包,本文将详细介绍函数的使用,需要的朋友可以参考下

    dbms_random是oracle提供的一个随机函数包,以下介绍一些dbms_random的常用示例:
    dbms_random.value用法:
    生成一个大于等于0,小于等于1的38位小数
    代码如下:
    -- FUNCTION value RETURN NUMBER;
    select dbms_random.value from dual;
    SQL> select dbms_random.value from dual;
    VALUE
    ----------
    0.61011338

    代码如下:
    -- FUNCTION value RETURN NUMBER;
    select dbms_random.value from dual;
    SQL> select dbms_random.value from dual;
    VALUE
    ----------
    0.61011338

    生成一个指定范围内的数
    代码如下:
    select dbms_random.value(100,0)
    from dual;
    SQL> select dbms_random.value(100,0)
    2 from dual;
    DBMS_RANDOM.VALUE(100,0)
    ------------------------
    20.7742244285517

    代码如下:
    -- FUNCTION value (low IN NUMBER, high IN NUMBER) RETURN NUMBER;
    select dbms_random.value(100,0)
    from dual;
    SQL> select dbms_random.value(100,0)
    2 from dual;
    DBMS_RANDOM.VALUE(100,0)
    ------------------------
    20.7742244285517

    dbms_random.normal用法
    获取正态分布的随机数
    代码如下:
    select dbms_random.normal from dual;
    SQL> select dbms_random.normal from dual;
    NORMAL
    ----------
    -1.7330759

    代码如下:
    select dbms_random.normal from dual;
    SQL> select dbms_random.normal from dual;
    NORMAL
    ----------
    -1.7330759

    dbms_random.string用法
    获取指定字符串
    代码如下:
    /* "opt" specifies that the returned string may contain:
    'u','U' : upper case alpha characters only
    'l','L' : lower case alpha characters only
    'a','A' : alpha characters only (mixed case)
    'x','X' : any alpha-numeric characters (upper)
    'p','P' : any printable characters
    */
    SQL>
    select
    dbms_random.string('u',10)
    from dual
    union all
    select
    dbms_random.string('U',10)
    from dual
    union all
    select
    dbms_random.string('l',10)
    from dual
    union all
    select
    dbms_random.string('L',10)
    from dual
    union all
    select
    dbms_random.string('a',10)
    from dual
    union all
    select
    dbms_random.string('A',10)
    from dual
    union all
    select
    dbms_random.string('x',10)
    from dual
    union all
    select
    dbms_random.string('X',10)
    from dual
    union all
    select
    dbms_random.string('P',10)
    from dual
    union all
    select
    dbms_random.string('P',10)
    from dual;

    代码如下:
    --FUNCTION string (opt char, len NUMBER)
    /* "opt" specifies that the returned string may contain:
    'u','U' : upper case alpha characters only
    'l','L' : lower case alpha characters only
    'a','A' : alpha characters only (mixed case)
    'x','X' : any alpha-numeric characters (upper)
    'p','P' : any printable characters
    */
    SQL>
    select
    dbms_random.string('u',10)
    from dual
    union all
    select
    dbms_random.string('U',10)
    from dual
    union all
    select
    dbms_random.string('l',10)
    from dual
    union all
    select
    dbms_random.string('L',10)
    from dual
    union all
    select
    dbms_random.string('a',10)
    from dual
    union all
    select
    dbms_random.string('A',10)
    from dual
    union all
    select
    dbms_random.string('x',10)
    from dual
    union all
    select
    dbms_random.string('X',10)
    from dual
    union all
    select
    dbms_random.string('P',10)
    from dual
    union all
    select
    dbms_random.string('P',10)
    from dual;

    DBMS_RANDOM.STRING(‘U',10)
    —————————-
    TXREHAICRI
    VDTMXZORVB
    udavjpudfb
    hvfqhjjdgz
    tZoanQzxtX
    siATLEZXQa
    2LWWZ3H3L5
    ZF6MKKG1R7
    #\j5IPva(W
    sJe/srX:ZB
    10 rows selected
    dbms_random.seed用法
    –可以设置seed来确定随机数的起始点,对于相同的seed而言,随机数的任意一次变化都将是确定的。
    – 就是说,如果在某一时刻调用了seed,之后第一次产生的随机数是4,第二次是6,第三次是1,
    – 那么当你再次调用相同的seed之后,一次产生的随机数还是4、6、1
    – seed有两种,一种是数值型的,一种是字符型(最大长度2000)的
    代码如下:
    SELECT USERENV('SESSIONID')
    FROM DUAL;
    BEGIN
    dbms_random.seed(6);
    END;
    /
    SELECT DBMS_RANDOM.value
    FROM DUAL
    CONNECT BY LEVEL < 10;

    代码如下:
    SELECT USERENV('SESSIONID')
    FROM DUAL;
    BEGIN
    dbms_random.seed(6);
    END;
    /
    SELECT DBMS_RANDOM.value
    FROM DUAL
    CONNECT BY LEVEL < 10;

    --SESSION 1
    代码如下:
    SQL> SELECT USERENV('SESSIONID')
    2 FROM DUAL;
    USERENV('SESSIONID')
    --------------------
    15140521
    SQL> BEGIN
    2 dbms_random.seed(100);
    3 END;
    4 /
    PL/SQL procedure successfully completed
    SQL> SELECT DBMS_RANDOM.value
    2 FROM DUAL
    3 CONNECT BY LEVEL < 10;
    VALUE
    ----------
    0.53801770
    0.67499536
    0.65362270
    0.76351985
    0.29859834
    0.40522032
    0.99551636
    0.39565580
    0.18074760
    9 rows selected

    代码如下:
    SQL> SELECT USERENV('SESSIONID')
    2 FROM DUAL;
    USERENV('SESSIONID')
    --------------------
    15140521
    SQL> BEGIN
    2 dbms_random.seed(100);
    3 END;
    4 /
    PL/SQL procedure successfully completed
    SQL> SELECT DBMS_RANDOM.value
    2 FROM DUAL
    3 CONNECT BY LEVEL < 10;
    VALUE
    ----------
    0.53801770
    0.67499536
    0.65362270
    0.76351985
    0.29859834
    0.40522032
    0.99551636
    0.39565580
    0.18074760
    9 rows selected

    --SESSION 2
    代码如下:
    SQL> SELECT USERENV('SESSIONID')
    2 FROM DUAL;
    USERENV('SESSIONID')
    --------------------
    15140517
    SQL> BEGIN
    2 dbms_random.seed(100);
    3 END;
    4 /
    PL/SQL procedure successfully completed
    SQL> SELECT DBMS_RANDOM.value
    2 FROM DUAL
    3 CONNECT BY LEVEL < 10;
    VALUE
    ----------
    0.53801770
    0.67499536
    0.65362270
    0.76351985
    0.29859834
    0.40522032
    0.99551636
    0.39565580
    0.18074760
    9 rows selected

    代码如下:
    SQL> SELECT USERENV('SESSIONID')
    2 FROM DUAL;
    USERENV('SESSIONID')
    --------------------
    15140517
    SQL> BEGIN
    2 dbms_random.seed(100);
    3 END;
    4 /
    PL/SQL procedure successfully completed
    SQL> SELECT DBMS_RANDOM.value
    2 FROM DUAL
    3 CONNECT BY LEVEL < 10;
    VALUE
    ----------
    0.53801770
    0.67499536
    0.65362270
    0.76351985
    0.29859834
    0.40522032
    0.99551636
    0.39565580
    0.18074760
    9 rows selected
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:oracle dbms_random
    上一篇:Oracle Table Demo语句应用介绍 下一篇:Oracle数据块实现原理深入解读

    相关文章推荐

    • 一起聊聊两条INSERT语句引发的死锁• mysql怎样修改用户• 如何解决ubuntu mysql 乱码问题• mysql存储过程怎样变量赋值• centos中rpm怎样安装mysql

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网