आप अपना खुद का कार्य कर सकते हैं। यह एक विकल्प है:
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
. को समायोजित करना चाह सकते हैं विभिन्न पूल आकारों को ध्यान में रखने के लिए - 26 l
. के लिए बनाम 36 x
. के लिए . (.419354839?
) आप value() का उपयोग भी कर सकते हैं और वर्ण मानों की शुरुआत और समाप्ति सीमा में पास कर सकते हैं, लेकिन यह वर्ण-सेट विशिष्ट होगा।
क्यों... Oracle को किसी कारण की आवश्यकता है? x
. का उपयोग यह सुझाव दे सकता है कि यह मूल रूप से हेक्साडेसिमल था और सभी अपर-केस को शामिल करने के लिए इसका विस्तार किया गया था, इसके बिना एक ही समय में मिश्रित-केस संस्करण जोड़ने के लिए ऐसा नहीं हुआ।