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.

Shimmy Weitzhandler
quelle
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.

Cletus
quelle
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.

Matt Enright
quelle
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
4
'+' ist nicht präsentativ en.wikipedia.org/wiki/List_of_international_call_prefixes
qubodup
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.

KevinDTimm
quelle
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

Webclimber
quelle
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