0 abgeschnitten

Sonic_cgn

Grünschnabel

Hallo !

Ich verzweifele noch.
Ich habe eine etwas Größere DB mit Adressen.
Die Spalte `plz` wurde mal falsch abgespeichert und nun sind alle PLZ wo vorne eine `0`dran war abgeschnitten.

Habe es schon versucht über eine Schleife in php zu Repairen.

Code:
$alt = $row_Recordset1['plz']; # z.B.6449
$neu = "0".$row_Recordset1['plz']; # wird dann zu 06449
mysql_query("UPDATE `altenheime` SET `plz` = $alt WHERE  `plz` =$neu LIMIT 1") ;

Habe die betreffenden Datensätze <=9999 mittels phpMyAdmin exportiert. Diesen Dump mit einem TextEditor korrigiert und wollte ihne wieder einspielen. Doch phpMyAdmin sagt immer leeres Result zurück.

Die Spalte ist nun eine "INT(5)" hoffe das ist richtig für Werte von "01000-99999"

Bitte um hilfe sonst ändere ich morgen alle Datensätze (652) von Hand. Und das muss ja wohl nicht sein :)
 
Zuletzt bearbeitet von einem Moderator:
Hi,

liegt es vielleicht daran, weil du die "neuen" Werte miten den "alten" aktualisieren willst?
Im Klartext: Kann es sein, dass du $alt und $neu vertauscht hast ;)
 
Hi

BTW:
ich bin mit allerdings auch nicht sicher, ob ein integer-Feld eine führende 0 nimmt. Ich würde als Feldformat ein Text-Feld nutzen ( char, varchar ). In anderen Ländern gibts auch Buchstaben in Postleitzahlen.
 
Luzie hat gesagt.:
Hi

BTW:
ich bin mit allerdings auch nicht sicher, ob ein integer-Feld eine führende 0 nimmt. Ich würde als Feldformat ein Text-Feld nutzen ( char, varchar ). In anderen Ländern gibts auch Buchstaben in Postleitzahlen.
Soweit mir bekannt ist, unterstützt MySQL Integer-Felder mit führenden Nullen. Das Problem kommt erst, Wenn man die DB mal auf Oracle oder SQL Server migrieren will/muss. Bei den meisten DBMS werden führende Nullen (aus meiner Sicht zurecht) nicht unterstützt.
Ich geb dir dabei Recht. Eine Zeichenkette ist hier eigentlich besser. Das Problem mit der Migrierung kann vielleicht auch bei einigen Skript- oder Programmiersprachen auftreten.

@Sonic
Wenn du jetzt vor hast den Datentyp der Spalte zu ändern, überleg dir vorher, welche Länderunterstützt werden soll. Wenn es mehrere sind musst du erstens auch ein Länderkürzel speichern und die Länge der Postleitzahl ist unterschiedlich. Wenn du nur deutsche PLZs unterstützen willst ist char(5) als Datentyp am geeignetsten
 
Hi

ich denke nicht, das mySQL eine führende 0 unterstützt, zumindest in meiner Version 4.013 nicht. Ich kenne das auch nicht, nicht in Access, nicht aus MSSQL.

Wir haben unser Feldformat für PLZ auf char oder varchar (text in Access) liegen, da wir nicht nur mit Deutschen Firmen arbeiten.

Auch im Textfeldformat kann man sortieren und eine Auswahl treffen, wenn sich dahingehend Bedenken aufbauen sollten, Länderkennzeichen vorausgesetzt ;)
 
Führende Nullen haben in Zahlenfeldern definitiv keine Relevanz und werden daher nicht mitgespeichert. Abgesehen davon wüsste ich auch nicht wie man eine führende Null bei einem Datentyp wie integer speichern sollte ;-)

Postleitzahlen gehören (für Deutschland) in char(5) Felder.

Gruß Marian
 
Das war sicherlich auch der Grund warum die 0 abgeschnitten ist.
Iss ja auch kein Problem ich hatte sie bei mir jetzt auch immer in einem varchar. Nur zum import habe ich sie auf int gestellt damit ich die Suche auch <=9999 stellen konnte das ging bei einem Char feld nicht.

Aber der FeldTyp ist auch vollkommen zweitrangig. Ich kann i´hn auch wieder auf Char(5) stellen.

Für mich ist viel wichtiger das ich vor meine OST-Städte eine 0 bekomme ohne alle Datensätze von Hand zu editieren.
Und bei einem VarChar es auch nicht. Gibt es nicht ein mySQL befehl in der art
if (plz <=9999 dann setzte 0 davor);

also mir geht es rein nur darum und nicht welcher Typ jetzt der bessere ist ;)

Cu Sven
 

Neue Beiträge

Zurück