¿Cómo reescribir números de teléfono en T-SQL?
-
03-07-2019 - |
Pregunta
Tengo una pregunta para principiantes en T-SQL.
Importamos hojas de Excel en un SQL Server 2008. Lástima que estos archivos de Excel no hayan sido formateados como deberían. Queremos que un número de teléfono se vea así: '012345678', sin espacios en blanco iniciales y finales y sin espacios en blanco. Peor aún, a veces el número está codificado con el prefijo '0123-2349823' o '0123/2349823'.
Normalmente exportaría el archivo de Excel a un CSV , y luego lanzaría algunos script mágico de Perl para hacer la limpieza y luego volver a importar el archivo de Excel.
Aún así sería interesante saber cómo hacer cosas como esta con T-SQL.
¿Alguna idea?
Solución
Algo así
replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')
debería funcionar. No se ve bonito. ;)
Otros consejos
Lo haría con una actualización y usaría las funciones 'Reemplazar' y LTrim / RTrim para SQL.
Update Table1
set phonenum = Case
When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
Else LTrim(RTrim(Replace(phonenum, '/', '')))
End
" Limpiado " contiene solo valor numérico
Dependiendo de si un número de teléfono contiene " - " ;, " / " ;, reemplácelos con una cadena vacía.
create table #t ( tel varchar(30) )
insert #t select '0123-2349823'
insert #t select '0123/2349823'
select tel,
replace(tel,
case
when patindex('%-%', tel) > 0 then '-'
when patindex('%/%', tel) > 0 then '/'
end, '') as Cleaned
from #t