sql >> Base de Datos >  >> RDS >> Oracle

Genere cadenas aleatorias alfanuméricas en mayúsculas y minúsculas en Oracle

Puedes hacer tu propia función. Esta es una opción:

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

Es posible que desee ajustar el 0.5 para tener en cuenta los diferentes tamaños de grupo - 26 para l contra 36 para x . (.419354839? ). También podría usar value() y pasar el rango inicial y final de los valores de los caracteres, pero eso sería específico del juego de caracteres.

En cuanto a por qué... ¿Oracle necesita una razón? El uso de x podría sugerir que originalmente era hexadecimal y se expandió para incluir todo en mayúsculas, sin que se les ocurriera agregar una versión en mayúsculas y minúsculas al mismo tiempo.