如何用DBMS_RANDOM oracle返回一个混合大小写的字母数字字符串?

时间:2014-06-03 08:53:29

标签: sql oracle random

基于此处的规范(部分STRING函数,参数)

无法设置混合大小写的字母数字字符串。是否不支持此功能 有进一步的设置需要考虑吗?

2 个答案:

答案 0 :(得分:2)

如果功能正常.....

CREATE OR REPLACE FUNCTION GET_RANDOM_STRING(v_length NUMBER) RETURN VARCHAR2
IS
    lKey VARCHAR2(4000);
BEGIN
   FOR I IN 1..v_length LOOP
      lKey := lKey || substr( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', mod(abs(dbms_random.random), 62)+1, 1);
   END LOOP;

   RETURN lKey;
END;
/

答案 1 :(得分:2)

此外,您可以根据 cagcowboy 中的功能进行简单查询。类似的东西:

SELECT LISTAGG (
          (SELECT SUBSTR ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rnd, 1)
             FROM DUAL),
          '')
       WITHIN GROUP (ORDER BY lvl)
  FROM (SELECT     LEVEL AS lvl, MOD (ABS (DBMS_RANDOM.random), 62) + 1 AS rnd
              FROM DUAL
        CONNECT BY LEVEL < 10)

其中10是随机字符串的长度