19 Stimmen

Rufnummernspalten in einer Datenbank

In den letzten 3 Unternehmen, in denen ich gearbeitet habe, sind die Spalten mit den Telefonnummern vom Typ varchar(n). Der Grund dafür ist, dass sie vielleicht Durchwahlen (ext. 333) speichern wollen. Aber in jedem Fall werden die "-"-Zeichen beim Einfügen und Aktualisieren herausgenommen. Ich verstehe nicht, warum die ".ext"-Zeichen gespeichert werden dürfen, das "-"-Zeichen aber nicht. Hat das noch jemand erlebt und welche Erklärung fällt Ihnen dafür ein? Wenn Sie nur die Zahlen speichern wollen, sollten Sie dann nicht besser ein int-Feld verwenden? Wenn Sie dagegen die Zahl als String/Varchar speichern wollen, warum behalten Sie dann nicht alle Zeichen und machen sich keine Gedanken über die Formatierung beim Anzeigen und die Bereinigung beim Schreiben?

Ich bin auch daran interessiert, zu erfahren, wie die Speicherung von Telefonnummern an anderen Orten umgesetzt wird.

30voto

Codewerks Punkte 5684

Schnelltest: Werden Sie Telefonnummern addieren/subtrahieren/multiplizieren/dividieren? Nö. Ähnlich wie bei SSNs handelt es sich bei Telefonnummern um diskrete Daten, die tatsächliche Zahlen enthalten können, so dass ein Stringtyp wahrscheinlich am besten geeignet ist.

12voto

Pondidum Punkte 11289

Ein Punkt bei der Speicherung von Telefonnummern ist eine führende 0.

z.B.: 01202 8765432

in einer int-Spalte, wird die 0 entfernt, wodurch die Telefonnummer ungültig wird.

Ich wage die Vermutung, dass das - gegen Leerzeichen ausgetauscht wird, weil sie eigentlich nichts bedeuten.

z.B.: 123-456-789 = 123 456 789 = 123456789

3voto

Kibbee Punkte 64039

Ich persönlich würde keine Zeichen entfernen, denn je nachdem, woher die Telefonnummer stammt, kann sie unterschiedliche Bedeutungen haben. Lassen Sie die Telefonnummer genau in dem Format, in dem sie eingegeben wurde, da die Person, die die Nummer eingegeben hat, sie offensichtlich so zu sehen gewohnt ist.

1voto

Mark Brackett Punkte 83046

Es spielt keine Rolle, wie Sie es aufbewahren, Solange es konsistent ist . Normalerweise werden Formatierungszeichen entfernt, aber Sie können auch die Landesvorwahl, die Ortsvorwahl, das Amt und die Nebenstelle separat speichern, wenn Sie diese Werte abfragen möchten. Auch hier ist es wichtig, dass die Daten konsistent sind - andernfalls ist die Abfrage ein Kinderspiel.

1voto

amn Punkte 7628

Ein weiterer Grund, der mir einfällt, Telefonnummern nicht als "Zahlen", sondern als Zeichenketten zu speichern, ist, dass ein Teil des Software-Stacks, mit dem man auf die Datenbank zugreift (PHP, ich schaue dich an), oft nicht groß genug ist, um einige der längeren und/oder exotischen Telefonnummern zu speichern.

Die größte Zahl, die 32 Bits ohne Vorzeichen übertragen können, ist 4294967295. Das würde nicht für jede russische Handynummer funktionieren, zum Beispiel für die Nummer 4959261234.

Sie müssen also einen Weg finden, um mehr als 32-Bit-Zahlendaten zu übertragen, was zusätzliche Unannehmlichkeiten mit sich bringt. Obwohl Datenbanken schon seit langem sehr große Ganzzahlen unterstützen, genügt ein einziges schlechtes Glied in der Kette, um einen Showstopper zu erzeugen. Wie PHP, mal wieder.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X