Oracle
 sql >> Base de données >  >> RDS >> Oracle

Générer une chaîne aléatoire alphanumérique en majuscules et minuscules dans Oracle

Vous pouvez créer votre propre fonction. C'est une option :

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

Vous voudrez peut-être ajuster le 0.5 pour tenir compte des différentes tailles de pool - 26 pour l contre 36 pour x . (.419354839? ). Vous pouvez également utiliser value() et transmettre la plage de début et de fin des valeurs de caractères, mais ce serait spécifique au jeu de caractères.

Quant à savoir pourquoi... Oracle a-t-il besoin d'une raison ? L'utilisation de x pourrait suggérer qu'il était à l'origine hexadécimal et a été étendu pour inclure toutes les majuscules, sans qu'il leur vienne à l'esprit d'ajouter une version à casse mixte en même temps.