如何从一组固定的字符中生成PL/SQL中的随机字符串?例如:我想生成一个长度为10的字母数字字符串,它排除某些字符和数字,例如I,O,0等.我找不到DBMS_RANDOM.STRING()使用所需集合播种的方法.PL/SQl中是否有内置方式来执行此操作?
谢谢.
你可以自己编写这样一个函数 - 接受特定字符集的函数将它混合起来并返回结果.这是一个例子.在此示例中,使用了listagg函数,该函数仅在Oracle 11G R2及更高版本中可用.
这是一个简单的功能:
SQL> create or replace function RandomString(p_Characters varchar2, p_length number)
2 return varchar2
3 is
4 l_res varchar2(256);
5 begin
6 select substr(listagg(substr(p_Characters, level, 1)) within group(order by dbms_random.value), 1, p_length)
7 into l_res
8 from dual
9 connect by level <= length(p_Characters);
10 return l_res;
11 end;
12 /
Function created
Run Code Online (Sandbox Code Playgroud)以下是它的工作原理:
SQL> select randomstring('1234567abcdefg', 10) res
2 from dual
3 connect by level <= 10
4 /
RES
----------
caedg54f67
f35eca6gb4
4ae6f1c37b
1c436g7a2b
16e357bd2a
564gca23ef
d57c21bg36
3gd62b4c1e
31ea5cb472
fe152bdga6
10 rows selected
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
8997 次 |
| 最近记录: |