Random numbers and characters [message #7283] |
Mon, 02 June 2003 04:55 |
Shahanur Rahman
Messages: 27 Registered: April 2003
|
Junior Member |
|
|
Hi
Can anybody please tell me how to generate random numbers including characters like a,b,L,T etc. (i only know generating numbers like 9876667,9875667 using sys.dbms_random)
moreover i want to omit 2 characters from the generated numbers those are l and o
length will be 9 and it will be looking like
k9445jLDc or 98jPt3cjk
Thanks
|
|
|
Re: Random numbers and characters [message #7286 is a reply to message #7283] |
Mon, 02 June 2003 10:47 |
Art Metzer
Messages: 2480 Registered: December 2002
|
Senior Member |
|
|
Note, this package will generate ID's with capital L's and capital O's.SQL> CREATE OR REPLACE PACKAGE id_generator
2 AUTHID CURRENT_USER
3 AS
4 FUNCTION convert_0_to_59_to_char (
5 p_num IN NATURAL
6 )
7 RETURN VARCHAR2;
8
9 FUNCTION make_id (
10 p_length IN POSITIVE DEFAULT 9
11 )
12 RETURN VARCHAR2;
13 END id_generator;
14 /
Package created.
SQL> CREATE OR REPLACE PACKAGE BODY id_generator AS
2 FUNCTION convert_0_to_59_to_char (
3 p_num IN NATURAL
4 )
5 RETURN VARCHAR2
6 IS
7 l_char VARCHAR2(1);
8 BEGIN
9 IF p_num BETWEEN 0 AND 9 THEN
10 l_char := CHR(48 + p_num);
11 ELSIF p_num BETWEEN 10 AND 35 THEN
12 l_char := CHR(55 + p_num);
13 ELSIF p_num BETWEEN 36 AND 46 THEN
14 l_char := CHR(61 + p_num);
15 ELSIF p_num BETWEEN 47 AND 48 THEN
16 l_char := CHR(62 + p_num);
17 ELSIF p_num BETWEEN 49 AND 59 THEN
18 l_char := CHR(63 + p_num);
19 ELSE
20 l_char := NULL;
21 END IF;
22 RETURN (l_char);
23 END convert_0_to_59_to_char;
24
25 FUNCTION make_id (
26 p_length IN POSITIVE DEFAULT 9
27 )
28 RETURN VARCHAR2
29 IS
30 l_num NATURAL;
31 l_id VARCHAR2(100);
32 BEGIN
33 FOR i IN 1..LEAST(p_length,100) LOOP
34 l_num := MOD(ABS(DBMS_RANDOM.RANDOM),60);
35 l_id := l_id
36 || convert_0_to_59_to_char(l_num);
37 END LOOP;
38 RETURN (l_id);
39 END make_id;
40 END id_generator;
41 /
Package body created.
SQL> SELECT id_generator.make_id FROM DUAL;
MAKE_ID
---------------------------------------------------------------------------------------------------------
yJGFdApcr
SQL> SELECT id_generator.make_id FROM DUAL;
MAKE_ID
---------------------------------------------------------------------------------------------------------
xS67OVjKh
SQL> SELECT id_generator.make_id FROM DUAL;
MAKE_ID
---------------------------------------------------------------------------------------------------------
VuyGp2s54
SQL> SELECT id_generator.make_id(20) FROM DUAL;
ID_GENERATOR.MAKE_ID(20)
---------------------------------------------------------------------------------------------------------
3GquP1NVhFnMEfsRFy7U
SQL> SELECT id_generator.make_id(90) FROM DUAL;
ID_GENERATOR.MAKE_ID(90)
---------------------------------------------------------------------------------------------------------
nvMUEIUhhGwJjtavxBrekikrTR5UDGnudOYxXmK0Agw6kwArcOL6Lkkqjs87BrKF1UTwECCvb3MZRn80CtW1cQ33eY
SQL> Good luck,
A
|
|
|
|