Oracle
 sql >> Database >  >> RDS >> Oracle

Genera stringhe casuali alfanumeriche maiuscole e minuscole in Oracle

Puoi creare la tua funzione. Questa è un'opzione:

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

Potresti voler modificare il 0.5 per tenere conto delle diverse dimensioni del pool - 26 per l contro 36 per x . (.419354839? ). Potresti anche usare value() e passare nell'intervallo iniziale e finale dei valori dei caratteri, ma sarebbe specifico del set di caratteri.

Quanto al perché... Oracle ha bisogno di un motivo? L'uso di x potrebbe suggerire che originariamente fosse esadecimale ed è stato ampliato per includere tutte le lettere maiuscole, senza che venisse loro in mente di aggiungere una versione con maiuscole e minuscole allo stesso tempo.