你可以做自己的功能.这是一个选择:

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可能表明它原来是十六进制的,并且被扩展为包括所有大写字母,而不会发生它们同时添加混合大小写的版本.

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐