Numerische Felder Nullen nicht abschneiden
Walter
- datenbank
Hallo!
Also ich möchte eine Vorwahl speichern, aber als numerisches Feld, da MySQL diese Felder schneller überprüft.
Wie schaffe ich es das im Feld 0043 steht und nicht die Nullen abgeschnitten werden?
Danke im voraus!
Walter
Hi,
nimm Feldtyp
varchar(irgendwas)
oder irgendeine
text - Option
Sollte funktionieren. Guck halt genau was du brauchst bzw. was gespeichert werden soll um die Tabelle nicht großartig aufzublähen!
Bis denne
Botix
Hi!
Eben wird sie dadurch aufgebläht. Zudem wird die Tabelle sehr groß und somit der Zugriff zu langsam.
Gibt es nicht eine andere Möglichkeit?
Walter
hi,
Gibt es nicht eine andere Möglichkeit?
nein.
eine zahl in ihrer internen speicherung hat keine führenden nullen.
gruss,
wahsaga
Also ich möchte eine Vorwahl speichern, aber als numerisches Feld, da MySQL diese Felder schneller überprüft.
Wie schaffe ich es das im Feld 0043 steht und nicht die Nullen abgeschnitten werden?
http://dev.mysql.com/doc/mysql/de/Column_types.html du findest dort zerofill. Aber ich befürchte das wird dir nicht weiterhelfen.
Telefonnummern werden aber auch üblicherweise als char abgespeichert.
Struppi.
hallö,
Wie schaffe ich es das im Feld 0043 steht und nicht die Nullen abgeschnitten werden?
ne frage zum problem: die option zerofill wird wohl bekannt sein. da vorwahlen aber unterschiedlich lang sind, liegt das problem wohl in beispielsweise 000043 statt 0043. richtig?!
dafür fallen mir nur tricks ein. am einfachsten wäre das speichern ohne führende nullen. die sind ja sehr einfach in der ausgabe wieder voranzustellen.
grüße aus Leipzig
willie.de
hi,
dafür fallen mir nur tricks ein. am einfachsten wäre das speichern ohne führende nullen. die sind ja sehr einfach in der ausgabe wieder voranzustellen.
und in welcher anzahl?
gruss,
wahsaga
hallö,
und in welcher anzahl?
nun ja, da halte ich es für nicht umständlich und für das durchsuchen der db eher günstig, zwei felder anzulegen für nat./int. vorwahlen - analog zu realen speichervorgängen (schreiben ins adressheftchen etc.)
grüße aus Leipzig
willie.de
hallö nochmal,
da halte ich es für nicht umständlich und für das durchsuchen der db eher günstig, zwei felder anzulegen...
das ermöglicht auch das verwenden des international üblichen zeichnens '+' statt '00'. diese notation bezieht ein, dass aus manchen ländern (zb. Spanien) ein alternativer präfix für internationale verbindungen gewählt werden muss.
grüße aus Leipzig
willie.de
Hi,
Also ich möchte eine Vorwahl speichern, aber als numerisches Feld, da MySQL diese Felder schneller überprüft.
Nicht jede Ziffernfolge ist eine Zahl.
Eine Zahl hat einen Wert - dieser ist unabhängig von seiner Repräsentation. 255 und 2.55e2 und 0xFF stellen alle denselben Wert, also dieselbe Zahl dar.
Führende Nullen vor dem Komma sowie abschließende Nullen nach dem Komma verändern den Wert nicht.
Eine Telefonnummer ist eher eine Ziffernfolge, aber auf keinen Fall eine Zahl.
Denn die Anzahl der führenden Nullen ist eben nicht egal.
Ganz abgesehen davon gibt es Länder, bei denen für Auslandsgespräche nicht zwei Nullen (sondern eine andere Ziffernfolge) vorausgewählt werden müssen.
Daher hat es sich eingebürgert, die Landesvorwahl ohne die führenden Nullen, dafür aber mit einem '+', das die Ziffernfolge für Auslandsgespräche repräsentiert, darzustellen.
Also z.B. +49 für Deutschland.
Auch andere Zeichen können sinnvoll sein, z.B. ein '-' zwischen der Nummer des Hauptanschlusses und der Nummer der Nebenstelle.
Auf die Art kann jemand, der die Nummer einer Nebenstelle bekommen hat, jederzeit auch die Zentrale erreichen (einfach alles hinter '-' durch 0 ersetzen)
Eine Telefonnummer ist also eine Zeichenfolge, nicht nur eine Ziffernfolge.
Aus den genannten Gründen ist es unsinnig, für diese Zeichenfolge ein numerisches Feld zu benutzen.
cu,
Andreas