如何從固定字符集中生成PL/SQL中的隨機字符串?例如: 我想生成一個長度爲10的字母數字字符串,它排除了某些字符和數字,例如I,O,0等。我無法找到一種方法將DBMS_RANDOM.STRING()
與必需的設置結合。 PL/SQl中是否有內置的方法來執行此操作?PL/SQL從固定字符集中生成隨機字符串
謝謝。
如何從固定字符集中生成PL/SQL中的隨機字符串?例如: 我想生成一個長度爲10的字母數字字符串,它排除了某些字符和數字,例如I,O,0等。我無法找到一種方法將DBMS_RANDOM.STRING()
與必需的設置結合。 PL/SQl中是否有內置的方法來執行此操作?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
這裏是它如何工作的:
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
我試着種程序。它不適用於隨機字符串。 – user931518
-1播種隨機數發生器與這個問題無關 –