[résolu] mysql et regexp
12 messages
• Page 1 sur 1
-

e-kiwi - Modérateur

- Messages: 15541
- Inscription: 23 Déc 2003
[résolu] mysql et regexp
bonjour,
j'ai une table article avec deux champs : art_titre et art_texte
j'ai un nom de société $ent_nom
je cherche à trouver dans ma table article les articles qui citent cette société. pour cela , je recherche la chaine de caractere ent_nom dans mon art_titre et art_texte, mais en ignorant les articles dans lequel ma chaine est précédé ou suivie d'un caractere compris entre A et Z (pour, par exmple, si j'ai une société qui s'appelle CCI, que cela ne me ressorte pas un article contenant le mot "accident")
ma requete est :
$requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\")";
vous semble-t-elle correcte ?
j'ai une table article avec deux champs : art_titre et art_texte
j'ai un nom de société $ent_nom
je cherche à trouver dans ma table article les articles qui citent cette société. pour cela , je recherche la chaine de caractere ent_nom dans mon art_titre et art_texte, mais en ignorant les articles dans lequel ma chaine est précédé ou suivie d'un caractere compris entre A et Z (pour, par exmple, si j'ai une société qui s'appelle CCI, que cela ne me ressorte pas un article contenant le mot "accident")
ma requete est :
$requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\")";
vous semble-t-elle correcte ?
Dernière édition par e-kiwi le Ven Aoû 04, 2006 9:27, édité 1 fois.
- Tilt
- WRInaute impliqué

- Messages: 858
- Inscription: 26 Mar 2005
siddhy a écrit:Bonjour,
et si tu met un espace dans le like : like "% $ent_nom %" ?
Tu n'aurais plus besoin des regexp..
Non?
like "% $ent_nom %" or like "$ent_nom %" or like "% $ent_nom"
couvre presque toutes les éventualités.
Sinon en théorie tu peux utiliser \w (caractère de mot), \W (pas de caractère de mot), plutôt que NOT REGEXP, ou bien ^\w+ qui marchent bien en php (j'ignore si ça fonctionne pour mysql).
-

e-kiwi - Modérateur

- Messages: 15541
- Inscription: 23 Déc 2003
siddhy et Tilt, ca n'est pas bon
siddhy, c'est écrit dans mon message :
>> si j'ai une société qui s'appelle CCI, que cela ne me
>> ressorte pas un article contenant le mot "accident"
Tilt> il suffit que la chaine commence le mot ou le termine et ca ne marches pas
mais c'est bon, j'ai trouvé ce qui marche TOUT LE TEMPS :
$requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."\")";
siddhy, c'est écrit dans mon message :
>> si j'ai une société qui s'appelle CCI, que cela ne me
>> ressorte pas un article contenant le mot "accident"
Tilt> il suffit que la chaine commence le mot ou le termine et ca ne marches pas
mais c'est bon, j'ai trouvé ce qui marche TOUT LE TEMPS :
$requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."\")";
-

siddhy - WRInaute discret

- Messages: 163
- Inscription: 20 Sep 2004
Par contre il me semble que la réponse de Tilt n'était pas mauvaise..
like "% $ent_nom %" pour les chaines au milieu
like "$ent_nom %" pour les chaines au début
like "% $ent_nom" pour les chaines en fin
Manque plus que le Pb de la ponctuation (par ex :virgule après ta chaine ou point ou ...) a traiter
(ça serait peut être plus rapide ?)
Bon, tu nous tiens au courant pour ta requête ? (dans 42 mn...)
Tilt a écrit:like "% $ent_nom %" or like "$ent_nom %" or like "% $ent_nom"
like "% $ent_nom %" pour les chaines au milieu
like "$ent_nom %" pour les chaines au début
like "% $ent_nom" pour les chaines en fin
Manque plus que le Pb de la ponctuation (par ex :virgule après ta chaine ou point ou ...) a traiter
(ça serait peut être plus rapide ?)
Bon, tu nous tiens au courant pour ta requête ? (dans 42 mn...)
Dernière édition par siddhy le Ven Aoû 04, 2006 8:47, édité 1 fois.
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Expression régulière MySql REGEXP pour transformer des liens
- résolu : bug de regexp sur WRI
- [Résolu] Requête MySQL
- [Résolu]- Requête MySql
- [Résolu] RAND et Mysql
- [résolu] mysql à distance
- [resolu]Mysql - optimisation
- [résolu]Mysql et doublon
- [résolu] [mysql] Conditions WHERE avec AND et OR
- [Resolu] Impossible de lancer mysql!
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
- Sortie officielle de GoogleStats v2.0 ! - 23-02-2003
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Le WRInaute du moment - 24-10-2006
- Les différents systèmes de mise en cache des données - 16-08-2010
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

