sql >> Databasteknik >  >> RDS >> Oracle

Generera alfanumerisk slumpmässig sträng med stora och små bokstäver i Oracle

Du kan göra din egen funktion. Det här är ett alternativ:

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 kanske vill justera 0.5 för att ta hänsyn till de olika poolstorlekarna - 26 för l mot 36 för x . (.419354839? ). Du kan också använda value() och pass i start- och slutintervallet för teckenvärdena, men det skulle vara teckenuppsättningsspecifikt.

Varför... behöver Oracle en anledning? Användningen av x kan antyda att det ursprungligen var hexadecimalt och utökats till att omfatta alla versaler, utan att det faller dem in att lägga till en blandad version samtidigt.



  1. Hur SQRT() fungerar i MariaDB

  2. Försöker räkna ut maxlängden på Rowid i Oracle

  3. gruppera efter prisklass

  4. Vad är det korrekta namnet på en associationstabell (en många-till-många-relation)