107 votes

Ce type de données doit être utilisé pour stocker des numéros de téléphone dans SQL Server 2005?

J'ai besoin de stocker des numéros de téléphone dans un tableau. Veuillez suggérer quel type de données doit-je utiliser? Attendre. Veuillez la lire avant de vous frappez la réponse..

Ce champ doit être indexé fortement que les Représentants des Ventes peuvent utiliser ce champ pour la recherche (y compris le caractère sauvage de recherche).

A partir de maintenant, nous nous attendons à des numéros de téléphone à venir dans un certain nombre de formats (à partir d'un fichier XML). Dois-je écrire un analyseur de convertir un format uniforme? Il pourrait y avoir des millions de données (avec doublons) et je ne veux pas attacher les ressources du serveur (dans les activités de prétraitement trop) à chaque fois une source de données vient par le biais de..

Toutes les suggestions sont les bienvenues..

Mise à jour: je n'ai pas de contrôle sur la source de données. Juste que la structure du fichier xml est un standard. Aimerait garder l'analyse xml à un minimum. Une fois qu'il est dans la base de données, la récupération doit être rapide. Un fou suggestion passe autour d'ici, c'est qu'il doit encore travailler avec Ajax fonctionnalité saisie semi-automatique (donc les Représentants des Ventes peuvent voir la correspondance immédiatement). OMG!!

73voto

Kearns Points 614

Est-ce à inclure:

  • Numéros internationaux?
  • Extensions?
  • D'autres informations en plus le nombre réel (comme "ask for bobby")?

Si tous ces éléments sont des non, je voudrais utiliser un 10 char champ et d'en extraire toutes les données non numériques. Si le premier est un oui et les deux autres sont des non, je ne l'utiliserais deux varchar(50) champs, un pour l'entrée d'origine et avec toutes les données non numériques à rayures et utilisé pour l'indexation. Si 2 ou 3 sont oui, je pense que je ferais les deux champs et une sorte de fou analyseur pour déterminer ce qui est de l'extension ou d'autres données et d'agir en conséquence. Bien sûr, vous pourriez éviter la 2ème colonne en faisant quelque chose avec l'index où il supprime les caractères supplémentaires lors de la création de l'index, mais je voudrais faire une deuxième colonne et probablement ne le décapage de caractères avec un seuil de déclenchement.

Mise à jour: à l'adresse de l'AJAX question, il peut ne pas être aussi mauvais que vous le pensez. Si c'est de façon réaliste le principal chemin, tout est fait pour la table, stocker uniquement les chiffres dans une deuxième colonne comme je l'ai dit, et puis faire l'index de la colonne de la un cluster.

60voto

Brad Osterloo Points 351

Nous utilisons de type varchar(15), et certainement d'index sur ce champ.

La raison en est que les normes Internationales peuvent prendre en charge jusqu'à 15 chiffres

Wikipédia - Le Numéro De Téléphone De Formats

Si vous ne le soutien des numéros Internationaux, je vous recommande le stockage séparé d'un Monde Zone Code ou le Code du Pays pour mieux filtrer les requêtes par de sorte que vous ne trouvez pas vous-même l'analyse et la vérification de la longueur de votre champs de numéro de téléphone afin de limiter l'retourné les appels vers les USA par exemple

5voto

Joseph Bui Points 1277

L'utilisation de CHAR(10) si vous enregistrez des numéros de Téléphone aux usa seulement. Supprimer tout, mais les chiffres.

3voto

cori Points 4356

Je suis probablement le manque évident ici, mais ne serait pas un varchar juste assez longtemps pour votre plus longue prévue numéro de téléphone fonctionnent bien?

Si je suis en manque de quelque chose d'évident, je l'aime si quelqu'un serait-il remarquer...

3voto

Alex Fort Points 9961

Je voudrais utiliser un varchar(22). Assez grande pour contenir de l'amérique du nord numéro de téléphone avec l'extension. Vous voulez éliminer tous les méchants '(', ')', '-' les personnages, ou tout simplement de les analyser dans un format uniforme.

Alex

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X