Quel est le numéro de téléphone mondial le plus long que je devrais considérer dans SQL varchar (longueur) pour le téléphone

200

Quel est le numéro de téléphone mondial le plus long que je devrais considérer dans SQL varchar(length)pour le téléphone.

considérations:

  • + pour le code du pays
  • () pour l'indicatif régional
  • x + 6 numéros pour l'extension de l'extension (faites donc 8 {espace})
  • espaces entre les groupes (c'est-à-dire dans les téléphones américains + x xxx xxx xxxx = 3 espaces)
  • c'est là que j'ai besoin de votre aide, je veux qu'elle soit dans le monde entier

Considérez que dans mon cas particulier maintenant, je n'ai pas besoin de cartes, etc. le numéro commence par le code du pays et se termine par l'extension, pas de commentaires Fax / Téléphone, etc.

Shimmy Weitzhandler
la source
1
Je pense que la conversion du nombre en valeur longue serait une bonne solution, et elle n'aura besoin que de 64 bits d'espace, je l'utilise depuis des années, aucun problème
1
@MattDiPasquale déjà mentionné ici , mais merci!
Shimmy Weitzhandler,
2
D'accord, mais cette réponse ne comprenait pas le lien que j'ai donné. De rien. :-)
ma11hew28

Réponses:

79

Eh bien, étant donné qu'il n'y a pas de différence de frais généraux entre un varchar (30) et un varchar (100) si vous ne stockez que 20 caractères dans chacun, faites preuve de prudence et faites simplement 50.

cletus
la source
26
Juste pour la connaissance: alors quand y a-t-il des frais généraux? veuillez inclure une source dans votre réponse, afin que nous puissions aller de l'avant et en apprendre les bases.
Shimmy Weitzhandler
6
Je sais que cela devrait être le cas, mais ce n'est pas toujours le cas. Dans MySQL (par exemple), la longueur totale est utilisée pour le tri. Il est préférable d'appliquer au moins un effort minimal.
Morgan Tocker
15
Il n'y a pas de différence de taille de stockage entre les deux tailles de colonne. Il y a très probablement une surcharge, importante ou non, selon votre base de données particulière. SQL Server, par exemple, perd beaucoup de capacité pour prédire la taille des pages de données et optimiser ainsi les accès et l'alignement. Comme toujours, testez.
Matt Enright
16
L'optimisation prématurée est la racine de tout Mal.
Harindaka
78
Les généralisations platitudinales sont encore pires. Concevoir un système avec l'optimisation à l'esprit n'est jamais mauvais en soi - l' optimisation devient mal quand on consacre une quantité excessive de temps à l' efficacité inutiles, imperceptibles et mineures.
jbowman
167

En supposant que vous ne stockez pas des choses comme les '+', '()', '-', les espaces et ce que vous avez (et pourquoi le feriez-vous, ce sont des préoccupations de présentation qui varieraient en fonction des coutumes locales et des distributions du réseau de toute façon), la recommandation UIT-T E.164 pour le réseau téléphonique international (par lequel la plupart des réseaux nationaux sont connectés via) spécifie que le numéro entier (y compris l'indicatif du pays, mais pas les préfixes tels que le préfixe d'appel international nécessaire pour la numérotation sortante, qui varie d'un pays à l'autre, sans inclure les suffixes, tels que les numéros de poste PBX), ne doit pas dépasser 15 caractères .

Les préfixes d'appel dépendent de l'appelant et non de l'appelé et ne doivent donc pas (dans de nombreuses circonstances) être stockés avec un numéro de téléphone. Si la base de données stocke des données pour un carnet d'adresses personnel (auquel cas le stockage du préfixe d'appel international est logique), les préfixes internationaux les plus longs que vous auriez à traiter ( selon Wikipedia ) sont actuellement à 5 chiffres, en Finlande.

En ce qui concerne les suffixes, certains PBX prennent en charge jusqu'à 11 extensions numériques (encore une fois, selon Wikipedia ). Étant donné que les numéros de poste PBX font partie d'un plan de numérotation différent (les PBX sont distincts des échanges des compagnies de téléphone), les numéros de poste doivent être distingués des numéros de téléphone, soit avec un caractère de séparation, soit en les stockant dans une colonne différente.

Matt Enright
la source
5
Si vous ne stockez pas les caractères de format (comme '+', '(', ')', '-' et '') et que vous stockez des nombres de différentes nations, vous voudrez peut-être ajouter une colonne pour indiquer le format type du numéro lorsque le numéro est affiché.
Trispé le
38
Conclusion: les 15caractères. Si vous stockez le préfixe et le suffixe, la ligne du bas est: 5 + 15 + 11 = 31.
AlikElzin-kilaka du
3
@MattEnright, je pense que vous devriez mettre à jour le commentaire d'AlikElzin dans votre réponse.
Shimmy Weitzhandler
4
'+' n'est pas une présentation en.wikipedia.org/wiki/List_of_international_call_prefixes
qubodup
17

Dans la spécification GSM 3GPP TS 11.11 , 10 octets sont réservés dans le MSISDN EF (6F40) pour le «numéro de composition». Puisqu'il s'agit de la représentation GSM d'un numéro de téléphone et que son utilisation est permutée, (et il y a toujours la possibilité de parenthèses), 22 caractères de données devraient suffire.

D'après mon expérience, il n'y a qu'une seule instance de parenthèses ouvertes / fermées, c'est mon raisonnement pour ce qui précède.

KevinDTimm
la source
10

C'est un peu pire, j'utilise une carte d'appel pour les appels internationaux, donc son numéro local aux USA + numéro de compte (6 chiffres) + pin (4 chiffres) + "pause" + ce que vous avez décrit ci-dessus.

Je soupçonne qu'il pourrait y avoir d'autres cas

webclimber
la source
2
Vous avez un très bon point. J'ai ajouté quelques lignes à mon msg, veuillez lire
Shimmy Weitzhandler
10
La recomposition de la carte d'appel ne doit cependant pas figurer dans la base de données - c'est la partie qui est ajoutée lors de la numérotation selon les règles de numérotation. Les numéros stockés doivent être sous forme ISO, sans aucune information relative à la numérotation.
TomTom