Was ist die längste weltweit mögliche Telefonnummer, die ich in SQL varchar (Länge) für Telefon berücksichtigen sollte?


200

Was ist die längste weltweit mögliche Telefonnummer, die ich in SQL varchar(length)für Telefone berücksichtigen sollte?

Überlegungen:

  • + für Ländercode
  • () für Vorwahl
  • x + 6 Zahlen für die Erweiterungserweiterung (also machen Sie es 8 {Leerzeichen})
  • Leerzeichen zwischen Gruppen (dh in amerikanischen Telefonen + x xxx xxx xxxx = 3 Leerzeichen)
  • Hier brauche ich deine Hilfe, ich möchte, dass sie weltweit ist

Bedenken Sie, dass ich in meinem speziellen Fall jetzt keine Karten usw. benötige. Die Nummer beginnt mit der Landesvorwahl und endet mit der Nebenstelle, es werden keine Kommentare zu Fax / Telefon usw. oder Telefonkarten benötigt.


1
Ich denke, die Umwandlung der Zahl in einen langen Wert wäre eine gute Lösung, und es wird nur 64-Bit-Speicherplatz benötigt. Ich benutze dies seit Jahren, keine Probleme


1
@MattDiPasquale bereits erwähnt hier , aber dank!
Shimmy Weitzhandler

2
Richtig, aber diese Antwort enthielt nicht den Link, den ich gegeben habe. Bitte. :-)
ma11hew28

Antworten:


79

Wenn man bedenkt, dass es keinen Overhead-Unterschied zwischen einem Varchar (30) und einem Varchar (100) gibt, wenn man jeweils nur 20 Zeichen speichert, ist man vorsichtig und macht es einfach zu 50.


26
Nur zum Wissen: Wann gibt es Overhead? Bitte fügen Sie Ihrer Antwort eine Quelle bei, damit wir die Grundlagen daraus lernen können.
Shimmy Weitzhandler

6
Ich weiß, dass das der Fall sein sollte, aber es ist nicht immer so. In MySQL (zum Beispiel) wird die volle Länge zum Sortieren verwendet. Es ist am besten, zumindest einen minimalen Aufwand zu betreiben.
Morgan Tocker

15
Es gibt keinen Unterschied in der Speichergröße zwischen den beiden Spaltengrößen. Abhängig von Ihrer Datenbank besteht sehr wahrscheinlich ein erheblicher oder sonstiger Overhead. SQL Server verliert beispielsweise viel an Fähigkeit, Datenseitengrößen vorherzusagen und auf diese Weise Zugriffe und Ausrichtung zu optimieren. Wie immer testen.
Matt Enright

16
Vorzeitige Optimierung ist die Wurzel allen Übels.
Harindaka

78
Plattitüden Verallgemeinerungen sind noch schlimmer. Ein System mit einer Optimierung im Auge zu entwerfen ist nie böse per se - Optimierung böse wird , wenn man übermäßig viel Zeit , um unnötige, unmerklich und kleinere Effizienz widmet.
Jbowman

167

Angenommen, Sie speichern keine Dinge wie '+', '()', '-', Leerzeichen und Was-haben-Sie (und warum sollten Sie, es handelt sich um Präsentationsprobleme, die je nach lokalen Gepflogenheiten und Netzwerkverteilungen variieren würden Wie auch immer), die ITU-T-Empfehlung E.164 für das internationale Telefonnetz (über das die meisten nationalen Netze verbunden sind) legt fest, dass die gesamte Nummer (einschließlich der Landesvorwahl, jedoch ohne Präfixe wie das zum Wählen erforderliche Präfix für internationale Anrufe) ; Dies ist von Land zu Land unterschiedlich und enthält keine Suffixe (z. B. Nebenstellennummern). Sie darf höchstens 15 Zeichen lang sein .

Anrufpräfixe hängen vom Anrufer ab, nicht vom Angerufenen, und sollten daher (unter vielen Umständen) nicht mit einer Telefonnummer gespeichert werden. Wenn die Datenbank Daten für ein persönliches Adressbuch speichert (in diesem Fall ist das Speichern des Präfixes für internationale Anrufe sinnvoll), sind die längsten internationalen Präfixe, mit denen Sie sich befassen müssten ( laut Wikipedia ), derzeit 5-stellig in Finnland.

Bei den Suffixen unterstützen einige TK-Anlagen bis zu 11-stellige Nebenstellen ( laut Wikipedia ). Da Nebenstellennummern Teil eines anderen Wählplans sind (Nebenstellenanlagen sind von den Vermittlungsstellen der Telefongesellschaften getrennt), müssen Nebenstellennummern von Telefonnummern unterschieden werden können, entweder mit einem Trennzeichen oder indem sie in einer anderen Spalte gespeichert werden.


5
Wenn Sie die Formatzeichen (wie '+', '(', ')', '-' und '') nicht speichern und Zahlen aus verschiedenen Nationen speichern, möchten Sie möglicherweise eine Spalte hinzufügen, um das Format anzugeben Typ der Nummer, wenn die Nummer angezeigt wird.
Trisped

38
Fazit: 15Zeichen. Wenn Präfix und Suffix gespeichert werden, lautet die untere Zeile: 5 + 15 + 11 = 31.
AlikElzin-Kilaka

3
@MattEnright, ich denke, Sie sollten AlikElzins Kommentar in Ihrer Antwort aktualisieren .
Shimmy Weitzhandler


17

In der GSM-Spezifikation 3GPP TS 11.11 sind im MSISDN EF (6F40) 10 Bytes für das Wählen von Nummern reserviert. Da dies die GSM-Darstellung einer Telefonnummer ist und deren Verwendung durch Knabbern vertauscht wird (und es immer die Möglichkeit von Klammern gibt), sollten 22 Datenzeichen ausreichend sein.

Nach meiner Erfahrung gibt es nur einen Fall von offenen / geschlossenen Klammern, das ist meine Begründung für das oben Gesagte.


10

Es ist ein bisschen schlimmer, ich benutze eine Visitenkarte für internationale Anrufe, also die lokale Nummer in den USA + Kontonummer (6 Ziffern) + PIN (4 Ziffern) + "Pause" + was Sie oben beschrieben haben.

Ich vermute, dass es andere Fälle geben könnte


2
Du hast einen sehr guten Punkt. Ich habe ein paar Zeilen zu meiner Nachricht hinzugefügt, bitte lesen Sie
Shimmy Weitzhandler

10
Die Wahlwiederholung der Telefonkarte sollte sich jedoch nicht in der Datenbank befinden - dies ist der Teil, der beim Wählen gemäß den Wählregeln hinzugefügt wird. Gespeicherte Nummern sollten in ISO-Form ohne wählbezogene Informationen vorliegen.
TomTom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.