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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top