Laserscanner: MYSQL - INT Feld mit PLZ in Varchar wandeln und fehlende 0 ergä.

Hallo,

ich habe mir eine Datenbank mit PLZ und Ort gebastellt nur einen Fehler habe ich gemacht, ich habe das PLZ Feld als INT eingetragen.
Nun sind viele Ostdeutsche Städte statt mit 01234 mit 1234 eingetragen. Wie kann ich nun ohne einen manuellen eingriff die Fehlende Null hinzufügen?
Ich habe die DB Bereits auf VARCAR umgestelellt. Hat hier jemand Erfahrung?

  1. Hi,

    Nun sind viele Ostdeutsche Städte statt mit 01234 mit 1234 eingetragen. Wie kann ich nun ohne einen manuellen eingriff die Fehlende Null hinzufügen?

    wenn es ausschließlich deutsche Postleitzahlen sind, kannst Du per UPDATE-Statement eine '0' voran anfügen und vom Ergebnis nur die rechten fünf Zeichen nehmen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. HM,

      Update if tabelleplz count<4 +0 ???

      Ich stehe etwas auf dem Schlauch...

      1. Hello,

        Update if tabelleplz count<4 +0 ???

        Ich stehe etwas auf dem Schlauch...

        Dann steig doch runter :-)

        http://dev.mysql.com/doc/refman/5.1/en/string-functions.html

        concat()   http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_concat
        right()    http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_right

        Führe ein Update der Spalte durch.

        spaltenname = right(concat('00000', `spaltenname'),5);

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          spaltenname = right(concat('00000', spaltenname),5);

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
        2. echo $begrüßung;

          spaltenname = right(concat('00000', `spaltenname'),5);

          Es gibt keine deutschen Postleitzahlen, die mehr als eine führende Null haben.

          echo "$verabschiedung $name";

          1. Hello,

            spaltenname = right(concat('00000', spaltenname),5);

            Es gibt keine deutschen Postleitzahlen, die mehr als eine führende Null haben.

            Das Ganze ist soch sowieso ein philosophisches Problem für Programmierer.
            Mein Gedanke war, alle PLZ aufzufüllen auf fünf Stellen. Und das ist ja erstmal unabhängig davon, ob es die PLZ überhaupt gibt.

            Und dann geht das "wenn dann"-Theater los.

            Wenn nun jemand die PLZ für meine Bergstadt hier statt mit 37444 nur für die Region, also mit 3744 erfasst hat, was geschieht damit? Aus der halbnützlichen Regionalkennziffer wird dann eine unbrauchbare 03744. Ob es die gibt, weiß ich nicht?

            Ob man diese Ergänzung ohne Liste der verfügbaren PLZ und Nutzung der Redundanz aus dem Ortsabgleich  überhaupt mit gutem Gewissen durchführen darf, müsste also noch disjutiert werden. Vielleicht  verschlimmbessert man seinen Datenbestand damit nur?

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. echo $begrüßung;

              Wenn nun jemand die PLZ für meine Bergstadt hier statt mit 37444 nur für die Region, also mit 3744 erfasst hat, was geschieht damit? Aus der halbnützlichen Regionalkennziffer wird dann eine unbrauchbare 03744. Ob es die gibt, weiß ich nicht?
              Ob man diese Ergänzung ohne Liste der verfügbaren PLZ und Nutzung der Redundanz aus dem Ortsabgleich  überhaupt mit gutem Gewissen durchführen darf, müsste also noch disjutiert werden. Vielleicht  verschlimmbessert man seinen Datenbestand damit nur?

              Meines Erachtens bleibt das Problem gleich. Ob die Zahl nun falsch ist, weil eine Ziffer fehlt oder eine falsch ist ... man weiß in beiden Fällen nicht, welche das nun ist, wenn man keine Plausibilitätsprüfung durchführt.

              echo "$verabschiedung $name";

  2. Guten Tag,

    ich habe mir eine Datenbank mit PLZ und Ort gebastellt nur einen Fehler habe
    ich gemacht, ich habe das PLZ Feld als INT eingetragen.

    Definiere, wenn du ausschließlich deutsche PLZ eintragen willst, die Spalte als UNSIGNED ZEROFILL MEDIUMINT(5). Dann kannst du auch fünfstellige PLZ mit führender Null eintragen und bleibst beim richtigen Datentyp.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
    1. Hi,

      Definiere, wenn du ausschließlich deutsche PLZ eintragen willst, die Spalte als UNSIGNED ZEROFILL MEDIUMINT(5). Dann kannst du auch fünfstellige PLZ mit führender Null eintragen und bleibst beim richtigen Datentyp.

      INT als "richtigen" Datentyp für nicht-numerische Daten wie Postleitzahlen zu bezeichnen, halte ich für gewagt (bis schlicht falsch).

      MfG ChrisB

      --
      Light travels faster than sound - that's why most people appear bright until you hear them speak.
      1. Guten Tag,

        INT als "richtigen" Datentyp für nicht-numerische Daten wie Postleitzahlen zu
        bezeichnen, halte ich für gewagt (bis schlicht falsch).

        Und welcher Datentyp sind deutsche Postleitzahlen deiner Meinung nach? Buchstaben kommen in ihnen nicht vor und sie sind, mit Ausnahme der Feldpoststellen, auch alle fünfstellig.

        Gruß
        Christoph

        1. Hello,

          Und welcher Datentyp sind deutsche Postleitzahlen deiner Meinung nach? Buchstaben kommen in ihnen nicht vor und sie sind, mit Ausnahme der Feldpoststellen, auch alle fünfstellig.

          Das sind Strings.
          Sie haben mathematisch keine Bedeutung.
          Man will und kann damit nicht (sinnvoll) rechnen.

          Die führende '0' ist ein valides Zeichen mit Wert für den Gesamtausdruck.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  3. yo,

    Nun sind viele Ostdeutsche Städte statt mit 01234 mit 1234 eingetragen. Wie kann ich nun ohne einen manuellen eingriff die Fehlende Null hinzufügen?

    sicherlich führen viele wege nach rom, der beste weg in diesem falle geht über die funktion LPAD(), die genau dafür gedacht ist:

    UPDATE tabelle SET spalte_mit_plz = LPAD(spalte_mit_plz, '0', 5);

    Ilja

    1. echo $begrüßung;

      UPDATE tabelle SET spalte_mit_plz = LPAD(spalte_mit_plz, '0', 5);

      Du hast die Parameter falschrum notiert. Zuzweit kommt die Länge, dann dass Füllzeichen.

      echo "$verabschiedung $name";

      1. Hello,

        UPDATE tabelle SET spalte_mit_plz = LPAD(spalte_mit_plz, '0', 5);

        Du hast die Parameter falschrum notiert. Zuzweit kommt die Länge, dann dass Füllzeichen.

        Dann hättest Du ja auch gleich den Link dazutun können :-P
        http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_lpad

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de