重复A.B.Cade的答案(它与原文有点太远,不能留意评论):
select xmlagg(xmlelement("r", ch)).extract('//text()').getstringval()
from
(
select distinct first_value(ch) over (partition by lower(ch)) as ch
from (
select substr('abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ123456789',
level, 1) as ch
from dual
connect by level <= 59
order by dbms_random.value
)
where rownum <= dbms_random.value(10,13)
);
内部选择将值中的每个字符放入随机顺序;下一个级别使用first_value()和distinct来选择它首先看到的大写和小写对(a / A),这样你就不会重复甚至忽略大小写;然后限制在前10,11或12(不同)行;最后它使用相同的xmlagg调用将这些行转换为单个字符串.