Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/10/2007, 08h24   #1
Membre du Club
 
Inscription : novembre 2005
Messages : 170
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 170
Points : 53
Points : 53
Par défaut traitement avancé sur un champ texte

salut,

je suis en mysql 4.1. dans une table j'ai un champ text qui contient du code html. par exemple :
Code :
<strong>un</strong> exemple
j'ai un formulaire avec un champ text qui me permet de restreindre l'affichage des données en faisant ajoutant un "where" a mon select. par exmple si dans mon champ text, je tape "exemple", ma requete se transforme en :
Code :
SELECT * FROM test WHERE monchamp LIKE "%exemple%";
jusque la, rien de spécial, sauf que si dans mon champ de recherce je rentre "un exemple" alors ma requete ne me retourne plus rien. ce qu'il me faudrait c'est trouver un moyen pour enlever le code html pour que "<strong>un</strong> exemple" soit égale à "un exemple".

vous savez si c'est possible de faire ca?

merci d'avance
benkunz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 09h52   #2
Membre éprouvé
 
Avatar de nounetmasque
 
Inscription : janvier 2003
Messages : 491
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 491
Points : 488
Points : 488
Je ne suis pas cartain mais regarde la doc sur la fonction match :
doc mySQL
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."
nounetmasque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 11h02   #3
Membre du Club
 
Inscription : novembre 2005
Messages : 170
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 170
Points : 53
Points : 53
la methode ne me convient pas... ce qui me faudrait c'est une fonction qui ressemblerait a ca :

Code :
SELECT * FROM test WHERE REPLACE(FIELD,"<*>","")
en gros ca ferait un replace de tout ce qui serait dans une balise <> par du vide. est ce que ca existe ce genre de truc?
benkunz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 12h12   #4
Membre éprouvé
 
Avatar de nounetmasque
 
Inscription : janvier 2003
Messages : 491
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 491
Points : 488
Points : 488
Une autre solution consiterai, ors de la construction de ta clause where à remplacer les espaces par le caractère % ce qui te donnerai au final :
Code :
1
2
3
 
SELECT * FROM test 
WHERE monchamp LIKE "%un%exemple%";
Par contre cette requette n'est pas assez restrictive puisque l'article indéfini un peut ne pas précéder le mot exemple....
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."
nounetmasque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 15h15   #5
Membre du Club
 
Inscription : novembre 2005
Messages : 170
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 170
Points : 53
Points : 53
1 c'est pas propre et 2 ca ne marchera pas a tous les coups.
si j'ai dans ma DB : "test<a>toto"
et que dans mon champ texte je fais une recherche sur "testtoto", ma requete ne me retournera rien alors que je veux que "test<a>toto" me soit retourné.

je pense qu'avec des expressions regulieres ca doit etre faisable, non? personne n'en n'a jamais utilisé?
benkunz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 21h32   #6
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Code :
1
2
3
SELECT monchamp
FROM test
WHERE monchamp REGEXP 'un( |<[^>]+>)+exemple'
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 08h07   #7
Membre du Club
 
Inscription : novembre 2005
Messages : 170
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 170
Points : 53
Points : 53
tu veux bien m'en dire en peu plus sur ce que ca fait?
benkunz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 21h57   #8
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Si on définit que ce que tu veux comme "un" suivi d'une série d'espaces et/ou de balises HTML, ça donne une expression régulière comme ça :

Code :
"un(espace|balise HTML)+exemple"
Comment définir une balise HTML ? c'est un < suivi d'une série de caractères différents de >, puis d'un >. Donc <, puis [^>]+, puis >.

Quand tu recolles les morceaux, ça fait donc :

Code :
"un( |<[^>]+>)+exemple"
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h34.


 
 
 
 
Partenaires

Hébergement Web