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

Generer store og små alfanumeriske tilfældige strenge i Oracle

Du kan lave din egen funktion. Dette er en mulighed:

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

Du vil måske justere 0.5 for at tage højde for de forskellige poolstørrelser - 26 for l vs. 36 for x . (.419354839? ). Du kan også bruge value() og pass i start- og slutområdet for tegnværdierne, men det ville være karaktersætspecifikt.

Med hensyn til hvorfor... har Oracle brug for en grund? Brugen af ​​x kan tyde på, at det oprindeligt var hexadecimalt og blev udvidet til at omfatte alle store bogstaver, uden at det faldt dem ind at tilføje en version med blandede bogstaver på samme tid.



  1. Definering af en en-til-en relation i SQL Server

  2. datagrip Kan ikke anvende ændringer Denne tabel er skrivebeskyttet. Ændringer i celleeditoren kan ikke anvendes

  3. Aktiver Entity Framework 6 for MySql (C#) i WinForms af Microsoft Visual Studio 2013

  4. mysql muliple forespørgsler i én erklæring