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 MySQL Discussion :

Vérifier caractères dans une chaîne


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut Vérifier caractères dans une chaîne
    Bonjour,

    J'ai des chaînes de longueur variable de type :

    Ax

    Cb-Fb-Gx

    Gx-Fx-Gx

    Je veux vérifier que tous les caractères en deuxième position du segment de deux lettres sont des x.

    On peut imaginer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $str .= '-';
     
    $nbr = str_count ($str, 'x-');
     
    if ($nbr == (strlen ($str) / 3)) Il n'y a que des "x" en deuxième partie de segment.
     
    // En version plus condensée :
     
    if (str_count ($str . '-', 'x-') == (strlen ($str) / 3) Il n'y a que des "x" en deuxième partie de segment.
    Ma question est de savoir si str-count existe en MySQL car je voudrais inclure cette formule à une requête MyQSQL.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Plus simplement avec une expression régulière :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM tatable WHERE tacolonne REGEXP '^[A-Z]x(-[A-Z]x)*$'

    Bon là j'ai supposé que le premier caractère était toujours une lettre majuscule.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour Sabotage,

    Merci de ta réponse.

    Effectivement le premier caractère est toujours une majuscule.

    Cela dit il me semble qu'une expression régulière consomme plus de ressources qu'une fonction de chaîne.

    S'il existe un équivalent de str_count en MySQL, je tenterais bien ma chance avec.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    L'équivalent de str_count () n'existe pas en MySQL mais sans passer par les expressions régulières ce code fonctionne :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE CONCAT(ma_col,'-') LIKE REPEAT('_x-',CEIL(CHAR_LENGTH(ma_col)/3))

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2006, 12h07
  2. Comment remplacer plusieurs caractères dans une chaîne?
    Par Antigonos Ier Gonatas dans le forum Général Python
    Réponses: 5
    Dernier message: 16/06/2006, 16h04
  3. Réponses: 5
    Dernier message: 08/03/2006, 22h20
  4. Réponses: 5
    Dernier message: 03/02/2006, 18h47
  5. [String] Remplacement caractères dans une chaîne
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 4
    Dernier message: 19/07/2004, 11h15

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