IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Modèle posix pour un numéro de téléphone


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut Modèle posix pour un numéro de téléphone
    bonjour,
    j'essaie de mettre en pratique un exemple utilisant la syntaxe POSIX.
    l'idée est de créer un domaine dans une bdd postgresql pour créer une contrainte concernant les n° de tél.

    mon code relatif au domaine est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DOMAIN numtel AS varchar(14) CHECK (VALUE ~* '0\\d{1}\.\\{d2}\.\\{d2}\.\\{d2}\.\\{d2}');
    Lors de l'insertion de la donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO colonna.imprimeurs (code_imprimeur,nom_imprimeur,coordonnees,nb_employes,web,telephone,fax)
    VALUES (DEFAULT,'Imprimerie xxx',ROW(999,'Boulevard','Albert Germain',99999,'Paris'),178,NULL,'01.88.88.88.88','01.88.88.88.98');
    postgresql renvoie une ERREUR: 'la valeur pour le domaine numtel viole la contrainte de vérification « numtel_check »'.

    est-ce que quelqu'un peut m'aider pour comprendre ce qui ne va pas merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    Un simple CHECK de base sera mille fois plus efficace qu'une expression régulière qui s'exécute de manière récursive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CEHCK(NUM_TEL LIKE '0_.__.__.__.__' AND 
          CAST(REPLACE(NUMTEL, '.', '') AS DECIMAL(10)))

    D'autre part, je ne voit pas l'intérêt de stocker les points. C'est de la cosmétique qui nuit :
    • au traitement des données
    • au volume des données.

    Ceci est à présenter éventuellement dans une vue ou dans le formulaire d'affichage ou se saisie.

    A +

    A +

  3. #3
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut
    Bonsoir,
    Merci SQLpro pour votre rapide retour. Je ne l'ai pas dit explicitement mais j'essaie de mettre en pratique des exercices issus d'un livre (postgresql , entrainez vous ...).

    J'ai réussi à créer un domaine opérationnel à l'aide d'un code trouvé sur le forum écrit par 'alassanediakite'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE DOMAIN numtel AS varchar (14)
    CHECK (VALUE ~'^(0[0-9])(\.[0-9][0-9]){4}');
    Désolé je ne l'avais pas vu plutôt (j'étais parti sur le forum 'posix')

    Ceci étant je prends bonne note de vos remarques.

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/08/2016, 16h03
  2. [MySQL] Création de fonction pour affichage numéro de téléphones
    Par ripout dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/01/2011, 15h22
  3. API pour récupérer numéro de téléphone entrant
    Par farid91 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 08/02/2010, 17h19
  4. exécuter .vbs pour composer numéro téléphone
    Par dubitoph dans le forum VBScript
    Réponses: 1
    Dernier message: 03/08/2009, 16h15
  5. regex pour recupérer numéro de téléphone
    Par Jérémy Lefevre dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/09/2008, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo