REGEXP : distinguer .1 de .10

REGEXP : distinguer .1 de .10 - SQL/NoSQL - Programmation

Marsh Posté le 24-08-2006 à 14:15:33    

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.

Reply

Marsh Posté le 24-08-2006 à 14:15:33   

Reply

Marsh Posté le 24-08-2006 à 14:20:21    

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


Message édité par Elmoricq le 24-08-2006 à 14:20:31
Reply

Marsh Posté le 24-08-2006 à 14:27:04    

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
Reply

Marsh Posté le 24-08-2006 à 14:57:03    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed