Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1648 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  REGEXP : distinguer .1 de .10

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

REGEXP : distinguer .1 de .10

n°1430659
Inekman
Posté le 24-08-2006 à 14:15:33  profilanswer
 

Salut la compagnie,
 
J'ai un souci avec une requête SQL et les résultats qu'elle me retourne.
 
Je souhaite afficher tous les enregistrements dont un champ "dossier" contient par exemple :  
 
.1 ou .1.1 ou .1.2 (toutes les combinaisons possibles à base de .1) etc...
 
Ca j'arrive le faire avec cette requête :
 
SELECT * FROM matable WHERE dossier REGEXP "^.1(.*)"
 
Le souci, c'est que les résultats retournés sont les mêmes avec ce dossier : .10
 
Je voudrai avoir uniquement les enregistrements dont le champs dossier soit : .10 ou .10.1 ou .10.1.23 etc...
 
Là le "0" du ".10" est capturé par la parenthèse "(.*)" de la requête pour le ".1".
 
Mais je suis bloqué là. Avez-vous une petite aide à m'apporter ?
 
Merci.

mood
Publicité
Posté le 24-08-2006 à 14:15:33  profilanswer
 

n°1430662
Elmoricq
Modérateur
Posté le 24-08-2006 à 14:20:21  profilanswer
 

"^\.1(\..*)"  
 
 
(dans les regexp, "." signifie "n'importe quel caractère)


Message édité par Elmoricq le 24-08-2006 à 14:20:31
n°1430667
Inekman
Posté le 24-08-2006 à 14:27:04  profilanswer
 

Merci pour ta participation Elmoricq, cependant

SELECT * FROM matable WHERE dossier REGEXP "^\.1(\..*)"

ET  

SELECT * FROM matable WHERE dossier REGEXP "^\.10(\..*)"

me retournent les mêmes résultats alors que dans ma base, je n'ai aucun enregistrement pour ".1" mais j'en ai un pour ".10".
 
Faut changer un truc mais quoi :sleep:


Message édité par Inekman le 24-08-2006 à 14:49:04
n°1430702
Inekman
Posté le 24-08-2006 à 14:57:03  profilanswer
 

En réflechissant deux secondes de plus que d'habitude j'ai trouvé la solution que je vous donne ci-dessous :
 
Ceci ne retourne pas de résultat (car il n'y en a pas) :

SELECT * FROM matable WHERE dossier REGEXP "^.1([.][0-9]+)*$"

Alors que cette requête retourne un seul résultat :

SELECT * FROM matable WHERE dossier REGEXP "^.10([.][0-9]+)*$"


 
Donc le .1 ne pique pas les résultats de .10 et tout le monde il est content (moi le premier :D)
 
Encore merci à Elmirocq ;)


Message édité par Inekman le 24-08-2006 à 14:57:23

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  REGEXP : distinguer .1 de .10

 

Sujets relatifs
[regexp] Extraire deux chaines : "blabla"[espaces,tab]"blublu"Verifier numero de portable avec les RegExp
[RegExp] Détecter toutes les adresses URL d'une chaîne de caractèresDemande de regexp[Résolu]
RegExp - Empecher de prendre certains patternsAide débutant rêgle REGEXP
[mySQL] PB regexp + convert utf8 > latin[RegExp] exclure des sous chaines
[RegEx] Aide pour regexp (commence par ... et ne finit pas par ...)probleme requete REGEXP
Plus de sujets relatifs à : REGEXP : distinguer .1 de .10


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR