Frage

Ich habe einen Anfänger Frage in T-SQL.

Wir importierten Excel Sheets in eine SQL Server 2008. Schade, diese Excel-Dateien, die Art und Weise nicht formatiert wurden sie sein sollten. Wir wollen eine Telefonnummer wie folgt aussehen: ‚012345678‘, keine führende und nachfolgende Leerzeichen und keine Leerzeichen innerhalb. Noch schlimmer manchmal wird die Zahl mit einem Präfix codiert ‚0123-2349823‘ oder ‚0123/2349823‘.

Normalerweise würde ich die Excel-Datei in eine CSV Datei, starten Sie dann einige Magie Perl-Skript die Reinigung und dann wieder importiert die Excel-Datei zu tun.

Noch wäre es interessant zu wissen, wie Dinge mit T-SQL, wie dies zu tun.

Irgendwelche Ideen?

War es hilfreich?

Lösung

So etwas wie

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

sollte funktionieren. Nicht hübsch aussehen. ;)

Andere Tipps

würde ich es mit einem Update gehen und die ‚Ersetzen‘ und LTrim / RTrim Funktionen für SQL verwenden.

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

"Gereinigt" enthält nur numerischen Wert

Je nachdem, ob eine Telefonnummer enthält „-“., „/“, Ersetzen Sie sie durch eine leere Zeichenfolge

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top