it-swarm.com.de

Wie speichere ich Telefonnummern in MySQL-Datenbanken?

Mögliches Duplikat:
MySQL-Datentyp für Telefonnummer und Adresse

Irgendwelche Vorschläge zu bewährten Verfahren zum Speichern von Telefonnummern in einer DB? Betrachten Sie eine US-Telefonnummer:

  • 555 555 1212
  • 555-555-1212
  • (555) 555 1212
  • 5555551212
  • 1-555-555-1212
  • 1 (555) 555-1212
  • und so weiter ...

Sollte ich die Formatierung entfernen und nur Zahlen speichern? Soll ich nur ein Feld verwenden - oder in folgende Felder aufteilen: Landesvorwahl, Ortsvorwahl, Telefonnummer usw.? Vorschläge?

73
  • Alle als varchar (sie sind keine Zahlen, sondern "Sammlungen von Ziffern")
  • Land + Gebiet + Nummer separat
  • Nicht alle Länder haben eine Vorwahl (zB Malta, wo ich bin)
  • In einigen Ländern wird bei der internen Wahl die führende Null aus der Vorwahl entfernt (z. B. in Großbritannien).
  • Formatieren Sie im Client-Code
148
gbn

Sie sollten niemals Werte mit Format speichern. Die Formatierung sollte abhängig von den Benutzereinstellungen in der Ansicht erfolgen.

Die Suche nach Telefonnummern mit gemischter Formatierung ist nahezu unmöglich.

In diesem Fall würde ich in Felder aufteilen und als Ganzzahl speichern. Zahlen sind schneller als Texte, und das Aufteilen und Indexieren von Zahlen führt dazu, dass alle Arten von Abfragen schnell ausgeführt werden.

Führende 0 könnte ein Problem sein, aber wahrscheinlich nicht. In Schweden beginnen alle Vorwahlen mit 0 und das wird entfernt, wenn auch eine Landesvorwahl gewählt wird. Aber die 0 ist nicht wirklich ein Teil der Zahl, sondern ein Indikator, der angibt, dass ich eine Ortsvorwahl hinzufüge. Wie bei der Ländervorwahl, fügen Sie 00 hinzu, um anzugeben, dass Sie eine Ländervorwahl verwenden.

Führende 0 sollte nicht gespeichert werden, sie sollten bei Bedarf hinzugefügt werden. Angenommen, Sie speichern 00 in der Datenbank und verwenden einen Server, der nur mit + funktioniert. Sie müssen 00 für diese Anwendung durch + ersetzen.

Speichern Sie also Zahlen als Zahlen.

28

Ich schlage vor, die Zahlen in einem varchar ohne Formatierung zu speichern. Dann können Sie die Nummern auf der Client-Seite einfach entsprechend neu formatieren. Einige Kulturen ziehen es vor, Telefonnummern anders zu schreiben. in Frankreich schreiben sie Telefonnummern wie 01-22-33-44-55.

Sie können auch in Betracht ziehen, ein anderes Feld für das Land zu speichern, für das die Telefonnummer bestimmt ist, da dies anhand der angezeigten Nummer möglicherweise schwierig zu ermitteln ist. In Großbritannien werden elfstellige lange Nummern verwendet, in einigen afrikanischen Ländern siebenstellige lange Nummern.

Das heißt, ich habe früher für eine britische Telefongesellschaft gearbeitet, und wir haben Telefonnummern in unserer Datenbank gespeichert, je nachdem, ob sie aus dem Vereinigten Königreich oder aus dem Ausland stammten. Eine britische Telefonnummer wäre also 02081234123 und eine internationale 001800300300.

11
Steve Rukuts

varchar, Speichern Sie keine Trennzeichen. Möglicherweise möchten Sie die Telefonnummern für verschiedene Zwecke unterschiedlich formatieren. So speichern Sie (619) 123-4567 als 6191234567 Ich arbeite mit Telefonverzeichnisdaten und habe festgestellt, dass dies die beste Vorgehensweise ist.

9
SurferJoe

Ich würde ein varchar für die Telefonnummer vorschlagen (da Telefonnummern bekanntermaßen führende Nullen haben, die wichtig sind, um zu behalten) und die Telefonnummer in zwei Feldern haben:

Ländercode und Telefonnummer, d. H. Für 004477789787 Sie könnten CountryCode = 44 und Telefonnummer = 77789787 speichern

es kann jedoch sehr anwendungsspezifisch sein. Wenn Sie beispielsweise nur US-Nummern speichern und weiterhin schnell Abfragen wie "Alle Nummern aus einem bestimmten Bereich abrufen" ausführen möchten, können Sie das Feld für die Telefonnummer weiter aufteilen (und das Feld für die Ländervorwahl so wie es wäre löschen) redundant)

Ich glaube nicht, dass es einen allgemeinen richtigen und einen falschen Weg gibt, dies zu tun. Es kommt wirklich auf die Anforderungen an.

4
apokryfos

Ich würde empfehlen, diese als Zahlen in Spalten vom Typ varchar zu speichern - eine Spalte pro "Feld" (wie Contry-Code usw.).

Das Format sollte angewendet werden, wenn Sie mit einem Benutzer interagieren. Dies erleichtert beispielsweise die Berücksichtigung von Formatänderungen und hilft insb. wenn Ihre Bewerbung international wird ...

1
Yahia

Aus meiner Sicht sind unten meine Vorschläge:

  1. Speichern Sie die Telefonnummer in einem einzelnen Feld als varchar und teilen Sie sie nach dem Abrufen entsprechend auf.
  2. Wenn Sie als Zahl speichern, wird die vorangegangene 0 abgeschnitten, also immer als varchar speichern
  3. Überprüfen Sie die Telefonnummer des Benutzers, bevor Sie sie in Ihre Tabelle einfügen.
1
Elias Hossain

Schlagen Sie vor, dass Sie die Nummer als erweiterte alphanumerische Zeichenfolge speichern, die Sie akzeptieren möchten, und in einem varchar (32) oder ähnlichem speichern. Entfernen Sie alle Leerzeichen, Bindestriche usw. Fügen Sie die FORMATIERUNG der Telefonnummer in ein separates Feld ein (möglicherweise aus den Gebietsschemaeinstellungen abgeleitet). Wenn Sie Erweiterungen unterstützen möchten, sollten Sie sie in ein separates Feld einfügen.

1
Ahmed Masud

Ich würde sie definitiv teilen. Es wäre einfach, die Nummern nach Ortsvorwahl und Landesvorwahl zu sortieren. Aber auch wenn Sie nicht aufteilen möchten, fügen Sie die Zahlen einfach in einem bestimmten Format in die Datenbank ein. z.B. 1-555-555-1212 Ihre Kundenseite wird dankbar dafür sein, dass Ihre Nummern nicht neu formatiert werden.

0
mintobit