2011-02-28 27 views
5

Quiero reemplazar todos los caracteres no numéricos en un campo VARCHAR en MySQL, porque es una tabla telefónica y al importarlos encontré varios caracteres "Fax: xxx" o "-" que no deberían estar allí.¿Cómo reemplazar caracteres no numéricos en MySQL?

preferiría una solución que no implica múltiples REPLACE() llama,

Gracias de antemano

Respuesta

5

Esta es una función de MySQL:

delimiter // 

create function IF NOT EXISTS LeaveNumber(str varchar(50)) returns varchar(50) 
no sql 
begin 
declare verification varchar(50); 
declare result varchar(50) default ''; 
declare character varchar(2); 
declare i integer default 1; 

if char_length(str) > 0 then 
    while(i <= char_length(str)) do 
     set character = substring(str,i,1); 
     set verification = find_in_set(character,'1,2,3,4,5,6,7,8,9,0'); 

     if verification > 0 then 
      set result = concat(result,character); 
     end if; 

     set i = i + 1; 

    end while; 

return result; 
else 
return ''; 
end if; 
end // 


delimiter ; 

select leaveNumber('fAX:-12abcDE234'); -- RESULT: 12234 

utilizarlo como una función nativa de MySQL en su consulta de actualización.

+0

Gran nick de trabajo;) Usted salvó mi día :) –

+0

Me alegro de que mi función lo haya ayudado. Gracias por votacion. ;) –

+0

Solo los nombres de variables portugeese (?) Son muy confusos, cuando intentamos entender cómo se hace: D –

1

Su mejor opción podría ser usar una expresión regular reemplazar UDF. Te recomiendo que eches un vistazo a this one, que tiene una función REGEX_REPLACE que probablemente se adapte a tus necesidades.

Su expresión regular probablemente acaba de ver como esta:

[^0-9] 
+0

El enlace que proporcionó está roto :( –

Cuestiones relacionadas