前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试494】Oracle中哪个包用于生成随机值?

【DB笔试面试494】Oracle中哪个包用于生成随机值?

作者头像
小麦苗DBA宝典
发布2019-09-30 16:11:26
5780
发布2019-09-30 16:11:26
举报
题目部分

在Oracle中,Oracle中哪个包用于生成随机值?

答案部分

DBMS_RANDOM是一个可以生成随机数值或者随机字符串的程序包。这个包有INITIALIZE()、SEED()、TERMINATE()、VALUE()、NORMAL()、RANDOM()、STRING()等几个函数,它们提供了内置的随机数生成器,可以用于快速生成随机数,下面只介绍VALUE()和STRING()函数,其它函数的使用方法参考官方文档。

1、DBMS_RANDOM.VALUE方法

VALUE()是最常用的方法,它的用法一般有两种:第一种用法没有参数,会返回一个具有38位精度的数值,范围从0.0到1.0,但不包括1.0。以下示例返回10个[0,100)内的任意整数:

SQL> SET SERVEROUT ON
SQL> BEGIN 
   2    FOR I IN 1..10 LOOP 
   3      DBMS_OUTPUT.PUT_LINE(ROUND(DBMS_RANDOM.VALUE*100)); 
   4    END LOOP; 
   5  END; 
   6  / 
46 
19 
45 
37 
33 
57 
61 
20 
82 
8 

PL/SQL 过程已成功完成。

第二种VALUE带有两个参数,第一个指下限,第二个指上限,将会生成下限到上限之间的数字,但不包含上限,示例如下所示:

SQL> BEGIN 
   2    FOR I IN 1..10 LOOP 
   3      DBMS_OUTPUT.PUT_LINE(TRUNC(DBMS_RANDOM.VALUE(1,101))); 
   4    END LOOP; 
   5  END; 
   6  / 
97 
77 
13 
86 
68 
16 
55 
36 
54 
46 
PL/SQL 过程已成功完成。

2、DBMS_RANDOM.STRING方法

DBMS_RANDOM.STRING可以用来生成随机字符串,如下所示:

SELECT ROUND(DBMS_RANDOM.VALUE(0, 10)) COL_0,
       DBMS_RANDOM.STRING('a', ROUND(DBMS_RANDOM.VALUE(0, 10))) COL_A, --all返回不分大小写的字母字符串
       DBMS_RANDOM.STRING('u', ROUND(DBMS_RANDOM.VALUE(0, 10))) COL_U, --upper返回大写字母字符串
       DBMS_RANDOM.STRING('l', ROUND(DBMS_RANDOM.VALUE(0, 10))) COL_L, --little小写字母
       DBMS_RANDOM.STRING('x', ROUND(DBMS_RANDOM.VALUE(0, 10))) COL_X, --大写字母加数字
       DBMS_RANDOM.STRING('p', ROUND(DBMS_RANDOM.VALUE(0, 10))) COL_P --所有可以打印的字符
  FROM DUAL;

除此之外,还有DBMS_RANDOM.RANDOM返回的值介于2的31次方和-2的31次方之间的整数值,还有其它一些不常用的函数,这里就不介绍了。

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档