Domanda

Ho una domanda per principianti in T-SQL.

Abbiamo importato fogli Excel in un SQL Server 2008. Peccato che questi file Excel non siano stati formattati come dovrebbero. Vogliamo che un numero di telefono assomigli a questo: "012345678", senza spazi bianchi iniziali e finali e nessun spazio bianco all'interno. Ancora peggio a volte il numero è codificato con un prefisso '0123-2349823' o '0123/2349823'.

Normalmente esporterei il file Excel in un CSV , quindi avvierei un po ' script Perl magico per fare le pulizie e reimportare il file Excel.

Sarebbe comunque interessante sapere come fare cose come queste con T-SQL.

Qualche idea?

È stato utile?

Soluzione

Qualcosa di simile

replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')

dovrebbe funzionare. Non sembra carino. ;)

Altri suggerimenti

Vorrei farlo con un aggiornamento e utilizzare le funzioni 'Sostituisci' e LTrim / RTrim per SQL.

Update Table1
set phonenum = Case
        When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
            Else LTrim(RTrim(Replace(phonenum, '/', '')))
        End

" Puliti " contiene solo un valore numerico

A seconda che un numero di telefono contenga " - " ;, " / " ;, sostituiscili con una stringa vuota.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top