sql >> Database >  >> RDS >> Oracle

Genereer hoofdletters en kleine letters alfanumerieke willekeurige reeks in Oracle

U kunt uw eigen functie maken. Dit is een optie:

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

Misschien wilt u de 0.5 . aanpassen om rekening te houden met de verschillende poolgroottes - 26 voor l vs. 36 voor x . (.419354839? ). U kunt ook value() gebruiken en het begin- en eindbereik van de tekenwaarden doorgeven, maar dat zou specifiek zijn voor de tekenset.

Waarom... heeft Oracle een reden nodig? Het gebruik van x zou kunnen suggereren dat het oorspronkelijk hexadecimaal was en werd uitgebreid om alle hoofdletters te bevatten, zonder dat het bij hen opkwam om tegelijkertijd een versie met gemengde letters toe te voegen.



  1. Probleem met heredoc en PHP

  2. Hoe te voorkomen dat mysqldump dumps splitst in stappen van 1 MB?

  3. Ruwe query-join wijzigen in laravel Eloquent

  4. verander de kolom voor het neerzetten van tabellen in de Oracle-database