关于oracle随机

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太强大了!呵呵!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle提供了一个随机函数包叫做dbms_random。这个包中有一些常用的函数可以用来生成随机数。其中,dbms_random.value函数可以生成一个大于等于0,小于等于1的38位小数。 另外,dbms_random.string函数可以生成不同类型和长度的随机字符串。比如,使用'A'参数可以生成任意字符,'U'参数可以生成大写字符,'L'参数可以生成小写字符,'X'参数可以生成数字和字符,'P'参数可以生成可打印的字符。 除了以上函数外,还有一些已过时的函数,比如dbms_random.random函数,可以在(-power(2,31) <= random < power(2,31))范围内生成整数。 同时,还可以使用其他函数来扩展随机数的功能。比如,可以使用trunc函数来截取一个四位数的整数,使用round函数来按指定的精度进行四舍五入,使用ceil函数来返回大于或等于指定数字的最小整数,使用floor函数来取整数位。 综上所述,Oracle提供了丰富的随机函数来满足不同的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Oracle随机函数之dbms_random使用详解](https://download.csdn.net/download/weixin_38673924/13701693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Oracle 随机函数详解(dbms_random)](https://blog.csdn.net/qq_34745941/article/details/121967301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Oracle生成随机数](https://blog.csdn.net/songpeiying/article/details/84380412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值