Bernd: Datenbank aus 1 000 soll 1000 werden (30 000 000 -> 30000000)

Hallo,

beim Umstellen und bereinigen meine Datenbank habe ich ein paar Spalten gefunden die eigentlich nur einen Integer Wert enthalten, aber eine falsche Spalten Formatierung (var).

So sind viele Zahlen als 1 000 abgespeichert und bei anderen Spalten habe ich ein Komma statt einem Punkt in der Werten. Also 3,0 statt 2.0.

Gibt es eine elegante Möglichkeit diese Werte zu ändern

Bernd

  1. Hallo Bernd,

    die Leerstelle müsste man problemlos mit

    Update Tabelle
    Set spalte=replace(spalte, ' ', '')
    where Spalte like '% %'
    

    wegbekommen. Die where Klausel ist nicht unbedingt nötig, könnte aber bei einem schlechten SQL Optimizer die Query beschleunigen.

    Ein Komma durch einen Punkt kann man so auch ersetzen, aber ob dabei was Sinnvolles rauskommt hängt von den Daten ab. SELECTe dir alle Zeilen raus wo ein Komma drin ist und gucke es dir an. Sofern es nicht zu viel ist...

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Danke, ich werde es mal ausprobieren und mitteilen ob es sinnvoll ist, oder war

      Bernd

  2. Hi,

    beim Umstellen und bereinigen meine Datenbank habe ich ein paar Spalten gefunden die eigentlich nur einen Integer Wert enthalten, aber eine falsche Spalten Formatierung (var).

    So sind viele Zahlen als 1 000 abgespeichert und bei anderen Spalten habe ich ein Komma statt einem Punkt in der Werten. Also 3,0 statt 2.0.

    das heißt, die Zahlen sind nicht als Zahl gespeichert, sondern als String.

    Gibt es eine elegante Möglichkeit diese Werte zu ändern

    Kommt draf an, was du elegant findest. Für mich sieht das aus wie:

    • die kaputte Spalte umbenennen
    • unter dem ursprünglichen Spaltennamen eine neue Spalte mit einem int-Typ anlegen
    • alle Datensätze durchgehen, den String aus der alten Spalte lesen
    • den String in einen Zahlenwert wandeln (*)
    • den Zahlenwert in die neue Spalte schreiben
    • wenn alle Datensätze durch sind, die kaputte alte Spalte löschen

    Der mit (*) markierte Schritt ist der eigentliche Knackpunkt. Wenn deine Zahlen in so unterschiedlichen Formaten notiert sind, brauchst du da einige sehr knifflige Regeln oder eine sehr gute Heuristik.

    Einen schönen Tag noch
     Martin

    --
    Dass Dr. Oetker in Amerika eine Puddingmine entdeckt und damit seine ersten Millionen gemacht hat, ist nur ein Gerücht.
    1. Der mit (*) markierte Schritt ist der eigentliche Knackpunkt. Wenn deine Zahlen in so unterschiedlichen Formaten notiert sind, brauchst du da einige sehr knifflige Regeln oder eine sehr gute Heuristik.

      Und (Ach!) auch Glück.

      Soll heißen: Das Ergebnis muss kontrolliert werden.