加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Oracle中生成大小写字母数字随机字符串

发布时间:2020-12-12 15:12:19 所属栏目:百科 来源:网络整理
导读:如何从oracle生成大写和小写的字母数字随机字符串? 我已经使用从DB中选择DBMS_RANDOM.STRING(‘x’,10)来生成大写字母数字字符 并从双击中选择DBMS_RANDOM.STRING(‘a’,10)以生成大写和小写字母字符 …但我想要一个功能,大小写,和字母和数字字符. 此外,如
如何从oracle生成大写和小写的字母数字随机字符串?

我已经使用从DB中选择DBMS_RANDOM.STRING(‘x’,10)来生成大写字母数字字符

并从双击中选择DBMS_RANDOM.STRING(‘a’,10)以生成大写和小写字母字符

…但我想要一个功能,大小写,和字母和数字字符.

此外,如果您能想到Oracle没有实现这一点的好原因,那么奖励积分(或只是upvote)?

你可以做自己的功能.这是一个选择:
create or replace function random_str(v_length number) return varchar2 is
    my_str varchar2(4000);
begin
    for i in 1..v_length loop
        my_str := my_str || dbms_random.string(
            case when dbms_random.value(0,1) < 0.5 then 'l' else 'x' end,1);
    end loop;
    return my_str;
end;
/

select random_str(30) from dual;

RANDOM_STR(30)
--------------------------------------------------------------------------------
pAAHjlh49oZ2xuRqVatd0m1Pv8XuGs

您可能需要调整0.5以考虑不同的池大小 – 对于l,而对于x为36则为26. (0.419354839?).您还可以使用value()并传入字符值的起始和结束范围,但这将是特定于字符集的.

至于为什么… Oracle需要一个理由?使用x可能表明它原来是十六进制的,并且被扩展为包括所有大写字母,而不会发生它们同时添加混合大小写的版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读