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

Bases de données Delphi Discussion :

[D10.2][MySQL] Intégrer une expression régulière


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut [D10.2][MySQL] Intégrer une expression régulière
    Bonjour,

    Je suis en train de prendre une crise de nerfs... Je ne comprends vraiment pas ce problème qui doit être tout c.. à régler ( enfin j'espère )

    j'utilise une expression régulière pour vérifier les numéros de tel, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE (MonChamp NOT REGEXP "^0[1-9](([ ])[0-9]{2}){4}$")
    ça marche, j'ai bien le résultat attendu, par contre si j'ajoute ( la valeur par défaut de MonChampTel étant '' )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE (MonChampTel <> '') AND (MonChampTel NOT REGEXP "^0[1-9](([ ])[0-9]{2}){4}$")
    j'ai une erreur SQL avec REGEXP et pourtant si je copie colle le code dans MySQL Workbench : pas d'erreur

    Je précise que MonChampTel est de type VARCHAR(255) et que j'utilise un TMyQuery avec MyDAC

    Merci d'avance pour votre aide

  2. #2
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Bon je viens de trouver une solution, j'intègre le test de la chaine vide à l'expression régulière, cela me permet de virer le test comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE (MonChamTel NOT REGEXP "^$|^0[1-9](([ ])[0-9]{2}){4}$")

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 939
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 939
    Par défaut
    M'est avis que tu as juste oublié de doubler les apostrophes (ça ne va pas sauter aux yeux dans Delphi ni provoquer d'erreur puisque la chaîne est vide).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyQuery1.SQL.Text := 'SELECT * FROM MaTable WHERE (MonChampTel <> '''') AND (MonChampTel NOT REGEXP "^0[1-9](([ ])[0-9]{2}){4}$")';
    Avec MySQL, ça ne pose pas de problème de remplacer les apostrophes par des guillemets. Tu pourrais écrire MonChampTel <> "" ce qui simplifiera les copier/coller Delphi/Workbench.

    Et l'expression peut être simplifiée par ^0\d( \d{2}){4}$, mais tu ne gères pas l'outre-mer avec ça

  4. #4
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    M'est avis que tu as juste oublié de doubler les apostrophes (ça ne va pas sauter aux yeux dans Delphi ni provoquer d'erreur puisque la chaîne est vide).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyQuery1.SQL.Text := 'SELECT * FROM MaTable WHERE (MonChampTel <> '''') AND (MonChampTel NOT REGEXP "^0[1-9](([ ])[0-9]{2}){4}$")';
    Et oui... Je me doutais que c'était un problème tout simple, une bête faute d'inattention, merci. je vais quant même garder l'ajout à l'expression régulière.

    Citation Envoyé par Andnotor Voir le message
    Avec MySQL, ça ne pose pas de problème de remplacer les apostrophes par des guillemets. Tu pourrais écrire MonChampTel <> "" ce qui simplifiera les copier/coller Delphi/Workbench.
    Je sais, il faut que je prenne l'habitude de cela.

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

Discussions similaires

  1. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 18h17
  2. Une expression réguliére
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/09/2005, 20h14
  3. Réponses: 6
    Dernier message: 17/08/2005, 12h38
  4. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54
  5. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22

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