|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2009 Messages : 44 ![]() |
* Bonjour, *
J'ai un champ nommé "Téléphone"de type varchar et je dois ajouter une contrainte au quelle le numéro de téléphone doit être composer de 10 chiffres de (0 à 9) pourriez vous m'aidez s'il vous plait |
|
|
00
|
|
|
#2 |
![]() ![]() |
Quel est ton SGBD ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2009 Messages : 44 ![]() |
SQL SERVER 2005
|
|
|
00
|
|
|
#4 | |||||
|
Membre Expert
![]() ![]() |
Citation:
Un numéro de téléphone peut être composé de 2, 3, 4 jusqu'à 13 chiffres. Si tu es CERTAIN qu'à chaque fois tu attend un numéro à 10 chiffres alors tu peux : 1.) Changer le type VARCHAR de la colonne Telephone en CHAR (10) 2.) Poser la contrainte Code :
Code :
|
|||||
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() |
Question :
Est ce que le numéro de téléphone que vous désirez stocker peut contenir des caractères : espaces ' ', tirets '-' , point '.' ? A+ |
|
00
|
|
|
#6 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Sql Server n'offre pas la souplesse des expressions régulières et les limites du lie sont très contraignantes.
Je vous conseille donc de ne pas tenter de placer cette règle du côté Sql Server. |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 721 ![]() |
Il est possible à partir de la version 2005 d'utiliser CLR et les RegExp pour pallier ce défaut (et si votre besoin s'en fait vraiment ressentir).
Ne pas placer cette contrainte côté SQL Server me parait dangereux en plus ... ++ |
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() |
|
|
00
|
|
|
#9 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 937 ![]() |
Code :
- si la données doit être sujette à des calculs, alors prendre un type numérique - dans le cas contraire, prendre le type le plus "large" c'est à dire celui qui accepte tous les symboles possibles ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
10
|
|
|
#10 | ||||
|
Membre Expert
![]() ![]() |
Citation:
Citation:
Imaginez chez un même éditeur de solutions de centre d'appel on voit la colonne Telephone tantôt taillée sur VARCHAR (40) tantôt sur VARCHAR (50) Chez un autre éditeur la colonne Telephone est taillée sur : VARCHAR (255) Un troisième éditeur toujours dans le même domaine de centre d'appel choisit pour la colonne Telephone : nvarchar (20) C'est ce désordre qui ne me plaît pas ! Car il existe aujourd'hui des normes internationales émises par l’Union internationale des télécommunications (principalement les recommandations UIT-T E.122, E.123 et E.126) Et il suffit simplement de respecter ces recommandations ou si on veut tailler large de prendre le plus grand nombre possible de caractères que peut avoir un numéro de téléphone aujourd'hui. Une règle simple doit nous guider à choisir le type de colonne : éviter le gaspillage (mémoire et disque) ! Vu la multiplication des numéros de téléphones (moi personnellement j'en ai 1 fixe et 2 GSM) on peut imaginer que les chiffres seuls ne suffisent plus en qu'on peut être amener à intégrer des lettres dans les "numéros" de téléphone du coup la colonne Telephone initialement bien taillée doit subir une modification pour accepter les nouvelles valeurs de téléphones. Et à mon avis un ALTER TABLE ALTER COLUMN devrait suffir pour remettre tout en ordre : Code :
Quel est aujourd’hui le nombre de caractères maximales pour un numéro de téléphone dans le monde (sans les espaces, les points, les tirets) ? A propos de la convention de l'union européenne pour les numéros de téléphones |
||||
|
00
|
|
|
#11 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 662 ![]() |
Bonjour,
Pour avoir travaillé avec des numéros de téléphone provenant de plusieurs pays dont l'entreprise dans laquelle je travaillais dépendait littéralement, c'est 15 digits. J'ai donc stocké tout ça dans une colonne de type varchar(20) au cas où. Supposons que j'aie choisi de stocker ces valeurs en varchar(15). Cela n'aurait rien changé au comportement de l'application et de la base de données, puisque toute valeur de type varchar, quelle que soit la longueur que l'on s'impose, implique l'utilisation de deux octets supplémentaire qui permettent d'indiquer la fin de chaîne. Pour moi le problème se situe plutôt dans l'indexation, lorsqu'on doit retrouver un client à partir de son numéro de téléphone qui est souvent la seule information dont on dispose ... Je me suis donc tourné vers la fonction HASHBYTES() qui retourne un varbinary. Je l'ai mise en colonne calculée persistante indexée, et cela a très bien fonctionné. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#12 | ||||
|
Membre Expert
![]() ![]() |
Citation:
Citation:
s'il s'agit de stocker par exemple des noms je peux comprendre le "au cas où ?" Citation:
![]() Citation:
Par contre sur les IHM, il faut prévoir toutes les fantaisies ... ceux qui préfèrent mettre des espaces, des points, des tirets entre les chiffres. Ce qui demande un traitement préalable avant le stockage dans la base. Et ce n'est pas si simple A+ |
||||
|
00
|
|
|
#13 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 662 ![]() |
Citation:
Pour l'anecdote, les numéros en Indonésie étaient gérés d'une façon assez anarchique (cela a peut-être changé depuis), si bien que nous avions des numéros dont la taille allait de 8 à 12 chiffres pour ce pays ... @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() ![]() |
Je comprends
La chose n'est pas si simple même au sein d'une entreprise dans un même pays : Numéro interne, Numéro Externe, Numéro SDA, ... Il faut bien se renseigner sur ce que les gens veulent stocker. C'est ce que je suggérais à "nitch01" qui veut poser des contraintes sur une colonne Telephone. Je pense qu'au travers de cette discussion il a trouvé son "bonheur" ? A + |
|
00
|
|
|
#15 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 662 ![]() |
Je viens de découvrir ici qu'il n'y a aucun indicatif téléphonique commençant par zéro.
Cela signifie directement que l'on peut stocker les numéros de téléphone sous le type BIGINT (donc sans le "+", et en supposant qu'il n'y aura jamais de lettre dans les numéros de téléphone). On peut ensuite créer une contrainte de domaine (CHECK) supportée par une fonction scalaire, qui vérifie le format du numéro à l'aide d'une table les spécifiant. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#16 | |
|
Membre Expert
![]() ![]() |
Citation:
là ils se sont gourés ! Je suppose qu'ils ont fait leur saisie dans Excel qui a viré tous les zéros qui sont devant les chiffres J'ai fais un test rapide avec mon téléphone en composant : 336XXXXXXXX et je reçois le message du genre : "..... le numéro demandé n'est pas attribué " alors que le +336XXXXXXXX ou le 00336XXXXXXXX marchent bien. Il faut modifier/signaler cette erreur sur la page Wiki. A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com