Tenemos el arreglo a esta impedimento, al menos eso pensamos. Si sigues con preguntas coméntalo, que para nosotros será un gusto ayudarte
Solución:
usarías REGEXP_REPLACE
para eliminar todos los caracteres que no sean dígitos de un string:
select regexp_replace(column_name, '[^0-9]', '')
from mytable;
o
select regexp_replace(column_name, '[^[:digit:]]', '')
from mytable;
Por supuesto que puedes escribir una función. extract_number
. Sin embargo, parece un poco exagerado escribir una función que consiste en una sola llamada de función.
create function extract_number(in_number varchar2) return varchar2 is
begin
return regexp_replace(in_number, '[^[:digit:]]', '');
end;
Puedes usar expresiones regulares para extraer el número de string. Vamos a comprobarlo. Supongamos que este es el string mezclando texto y números ‘stack12345overflow569’. Este debería funcionar:
select regexp_replace('stack12345overflow569', '[[:alpha:]]|_') as numbers from dual;
que devolverá “12345569”.
También puedes usar este:
select regexp_replace('stack12345overflow569', '[^0-9]', '') as numbers,
regexp_replace('Stack12345OverFlow569', '[^a-z and ^A-Z]', '') as characters
from dual
que devolverá “12345569” para números y “StackOverFlow” para caracteres.
Recuerda dar recomendación a esta división si si solucionó tu problema.