Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de regex avec MySQL

Sujet résolu
    19 juillet 2010 à 10:56:23

    Bonjour,

    Je voudrai écrire une requête qui ne récupère que les noms qui ne contiennent que des MAJUSCULES des parenthèses () et des underscores _ et des chiffres aussi [0-9]. Donc, je dois sortir les noms du genre : XANAXILOVSKY (SDZ), MATEO21 (SDZ), MARIO (NDS), SONIC (NDS), ... et non comme: Jean Jacques (ABC), Bruno le MAGNIFIQUE, ...

    J'ai essayé la requête suivante:
    SELECT id, login_name, name FROM `users` WHERE name REGEXP '^[A-Z_\(\)]+$';
    

    mais çà n'a pas marché (et je trouve çà con moi même :-° ).

    Ensuite pour faire simple, j'ai essayé ceci:
    SELECT id, login_name, name FROM `users` WHERE name REGEXP '[^a-z]';
    

    mais çà affiche toujours les noms avec des caractères minuscules :(

    Enfin, j'ai essayé cette dernière:
    dsqkjf qskdfj kqsdfj qskfj mfkjk;
    

    Parce que j'étais à court d'idée. :euh: . Et le résultat:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dsqkjf qskdfj kqsdfj qskfj mfkjk' at line 1


    Est-ce que quelqu'un pourrait m'indiquer le bon pattern?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2010 à 19:34:15

      ... WHERE name REGEXP '^[A-Z0-9_]+ \\([A-Z]+\\)$'
      


      Un truc du genre...
      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2010 à 23:07:37

        SELECT 'a' REGEXP 'A';
        => 1

        Problème de collation, donc.
        • Partager sur Facebook
        • Partager sur Twitter
          20 juillet 2010 à 7:57:15

          Bonjour,

          Citation : Fayden

          ... WHERE name REGEXP '^[A-Z0-9_]+ \\([A-Z]+\\)$'
          



          Les noms avec les caractères minuscules s'affichent toujours.

          Et je viens de me rendre compte que les deux types de noms ne se différencient que par leur taille (minuscule et majuscule). Du coup, on a qu'à chercher les noms ne contenant pas des caractères minuscules.
          Je viens de découvrir aussi que REGEXP n'est pas sensible à la casse sans le mot clé BINARY. Donc, ma requête finale sera:
          SELECT id, login_name, name FROM users WHERE name REGEXP BINARY '^[^a-z]+$'
          

          Et ca marche nickel ^^

          Merci à vous
          • Partager sur Facebook
          • Partager sur Twitter

          Problème de regex avec MySQL

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown