【问题标题】:how to return a mixed case alphanumeric string with DBMS_RANDOM oracle?如何使用 DBMS_RANDOM oracle 返回混合大小写的字母数字字符串?
【发布时间】:2014-07-23 12:54:04
【问题描述】:

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

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

【问题讨论】:

    标签: sql oracle random


    【解决方案1】:

    此外,您可以根据 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 是随机字符串的长度

    【讨论】:

      【解决方案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;
      /
      

      【讨论】:

      • 我是不是应该理解默认不支持该功能?
      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 2023-03-10
      • 2013-09-02
      • 2020-01-04
      • 2019-08-08
      • 2013-10-07
      • 2023-04-09
      • 2011-09-24
      相关资源
      最近更新 更多