如何在PL/SQL Oracle Developer中使用不同的随机调用创建随机长度的字符串?

如何在PL/SQL Oracle Developer中使用不同的随机调用创建随机长度的字符串?,oracle,random,Oracle,Random,我正在编写一段PL/代码来测试数据库,以完成家庭作业。我工作的标准是:b。电子邮件长度必须少于20个字符,并且必须是有效的格式,例如在正确的位置有“@”符号和“.”符号 因此,我将有一个小于20的string/varchar。我知道顶级域是3个空格,点和at符号占据了5个相同长度的空格,剩下14个空格。所以我想我可以随机生成一个1-14范围内的字符串来填充剩余的空格,使整个字符串小于20。我该怎么做 Email := dmbs_random.string('U', trunc(dbms_rand

我正在编写一段PL/代码来测试数据库,以完成家庭作业。我工作的标准是:b。电子邮件长度必须少于20个字符,并且必须是有效的格式,例如在正确的位置有“@”符号和“.”符号

因此,我将有一个小于20的string/varchar。我知道顶级域是3个空格,点和at符号占据了5个相同长度的空格,剩下14个空格。所以我想我可以随机生成一个1-14范围内的字符串来填充剩余的空格,使整个字符串小于20。我该怎么做

Email := dmbs_random.string('U', trunc(dbms_random.value(1,14))||'@'||dmbs_random.string('U', trunc(dbms_random.value(1,14))||'.'||dbms_random.string('U',3)<20;

Email:=dmbs_random.string('U',trunc(dbms_random.value(1,14))| |'@'| dmbs_random.string('U',trunc(dbms_random.value(1,14))| | | random.string('U',3)有关简要说明,请参阅我在原始帖子下的评论。第一部分和第二部分应分别为9和6个字符(我们只有15个字符的空间,而不是17个字符——我数的是地址的第三部分,但我没有数“at”和“period”)

选择dbms_random.string('U',ceil(dbms_random.value(1.01,9)))||'@||
dbms_random.string('U',ceil(dbms_random.value(2.01,6)))| |'。'||
dbms_random.string('U',3)作为电子邮件
来自双重

按级别连接请参阅我在原始帖子下的评论,以获得简要解释。第一部分和第二部分应分别为9和6个字符(我们只能容纳15个字符,而不是17个字符-我正在计算地址的第三部分,但我没有计算“at”和“period”)

选择dbms_random.string('U',ceil(dbms_random.value(1.01,9)))||'@||
dbms_random.string('U',ceil(dbms_random.value(2.01,6)))| |'。'||
dbms_random.string('U',3)作为电子邮件
来自双重

按级别连接您就快到了。使用CEIL而不是TRUNC(否则0.24变为0,您将生成长度为0的字符串,这对于电子邮件是非法的)。为什么不生成长度介于2和10之间的第一部分,长度介于3和7之间的第二部分,以及长度正好为3的最后一部分?如果只是为了测试,那就足够了。您已经差不多做到了。使用CEIL而不是TRUNC(否则0.24变为0,您将生成长度为0的字符串,这对于电子邮件是非法的).为什么不生成长度在2和10之间的第一部分,长度在3和7之间的第二部分,以及长度正好为3的最后一部分?如果只是为了测试,那就足够了。
select     dbms_random.string('U', ceil(dbms_random.value(1.01, 9))) || '@' ||
           dbms_random.string('U', ceil(dbms_random.value(2.01, 6))) || '.' ||
           dbms_random.string('U', 3) as email
from       dual
connect by level <= 5
;

EMAIL
-------------------
VN@DUCZ.OQD
KTXNQWEL@PJITFC.ZAR
CHDTR@LMOXAO.WCD
GNV@LVTRU.AQG
LLC@TWJBB.NWT