关于oracle随机

来源:互联网 发布:手绘软件painter下载 编辑:程序博客网 时间:2024/05/16 00:25

17:00:59 SQL> desc dbms_random;
Element    Type     
---------- ---------
SEED       PROCEDURE
VALUE      FUNCTION
NORMAL     FUNCTION
STRING     FUNCTION
INITIALIZE PROCEDURE
RANDOM     FUNCTION
TERMINATE PROCEDURE
NUM_ARRAY TYPE     

使用desc命令查看该过程的结构,其中我们需要用到的也就values 、normal、string、random这四个函数吧,这四个函数都具有取随机值的功能,具体呢就不太一样了。

且看:

17:01:06 SQL> select dbms_random.value() from dual;

DBMS_RANDOM.VALUE()
-------------------
0.0536824248407651

17:05:09 SQL> select dbms_random.value(10,100) from dual;

DBMS_RANDOM.VALUE(10,100)
-------------------------
         29.2420951206225

17:05:27 SQL> select dbms_random.value(-1,-4) from dual;

DBMS_RANDOM.VALUE(-1,-4)
------------------------
       -3.98278017569502

参照oracle官方文档解释呢,value函数用于返回两个数值之间的随机数,value(low,high),如果你想得到的数值结果介于两个数之间呢,就用value了。

17:05:37 SQL> select dbms_random.normal() from dual;

DBMS_RANDOM.NORMAL()
--------------------
    1.09252306706526

17:08:10 SQL> select dbms_random.normal() from dual;

DBMS_RANDOM.NORMAL()
--------------------
-0.279331762111692

至于normal函数呢,那就是真正的随机数啦,出来的结果呢肯定不会让你猜到拉(如果你猜对了,恭喜你,你可以去买彩票啦!)

再看random函数

17:08:12 SQL> select dbms_random.random() from dual;

DBMS_RANDOM.RANDOM()
--------------------
          1936087379

17:10:30 SQL> select dbms_random.random() from dual;

DBMS_RANDOM.RANDOM()
--------------------
          -972915078

查看官方文档说的是random函数返回的值介于2的31次方和-2的31次方之间的整形数值。为啥是2的31次方呢?偷偷告诉你,oracle中支持最大的浮点数就是2的31次方啦,要是超过了的话oracle就不认识他了。

刚才我们看了三个都是产生的是数值型的数据,但是如果我们要字符型的数据呢?是不是就没有办法了呢?oracle肯定不会不考虑到这点的,那就是剩下来的string函数啦,光看他字面意思想必聪明的人就猜到了。

具体且看string函数:

17:10:32 SQL> select dbms_random.string('a',10) from dual;

DBMS_RANDOM.STRING('A',10)
--------------------------------------------------------------------------------
NKUoBATpqY

17:14:52 SQL> select dbms_random.string('u',10) from dual;

DBMS_RANDOM.STRING('U',10)
--------------------------------------------------------------------------------
VROIAWDULZ

17:14:58 SQL> select dbms_random.string('l',10) from dual;

DBMS_RANDOM.STRING('L',10)
--------------------------------------------------------------------------------
vknoaqgtqu

17:15:02 SQL> select dbms_random.string('x',10) from dual;

DBMS_RANDOM.STRING('X',10)
--------------------------------------------------------------------------------
7DGCOH2MW6

17:15:10 SQL> select dbms_random.string('p',10) from dual;

DBMS_RANDOM.STRING('P',10)
--------------------------------------------------------------------------------
+^nKo<p[Q_
大家应该发现了什么吧,string函数是带参数的,两个参数,前面参数代表意思呢是指返回何种字符型数据,后面的当然就是返回字符型数据的长度啦。下面就解释下前面参数的意义。

a呢代表返回的字符型数据呢都是字母组成的,且不分大小写,

u呢代表返回大写的字母组成的字符型数据

l代表返回小写的字母组成的字符型数据

x代表返回字母和数字组合的字符型数据而且都是大写的(貌似要小写的就不知道怎么办了难道oracle忘了?)

p呢返回的是所有可输出显示的字符型类型的数据(也就是杂七杂八的啦)

string是不是很神奇啊?oracle太强大了!呵呵!

原创粉丝点击