Comparer 2 chaines de caractères en SQL
waxor
Messages postés
59
Statut
Membre
-
moiced59 Messages postés 1161 Statut Membre -
moiced59 Messages postés 1161 Statut Membre -
Bonjour à tous,
j'ai un petit problème au niveaux d'une requête SQL. Je suis en train de développer un site web sur lequel je stocke mes articles dans une base de donnée.
je suis en train d'essayer d'ajouter une petite barre de recherche pour retrouver les différents articles de mon site et je cherche un moyen pour que ma requête SQL me permette de ressortir uniquement les résultats qui contiennent l'ensemble des mots contenu de la recherche dans le titre.
En gros la recherche de l'utilisateur est récupérée, retravaillée (on enlève les un, une, des, le, la, les, l', etc...) et une fois que l'on à que les mots significatifs il faut comparer cette requête aux titres des mes articles et ressortir ceux dont l'ensemble des mots de la recherche se trouvent dedans (même si il ne sont pas dans le bon ordre).
----------------------------------------------------------------------------------
Exemple :
Recherche :
Résultats :
----------------------------------------------------------------------------------
Voila j'espère que ce n'est pas trop confus.
Merci d'avance pour votre aide.
Jean.
j'ai un petit problème au niveaux d'une requête SQL. Je suis en train de développer un site web sur lequel je stocke mes articles dans une base de donnée.
je suis en train d'essayer d'ajouter une petite barre de recherche pour retrouver les différents articles de mon site et je cherche un moyen pour que ma requête SQL me permette de ressortir uniquement les résultats qui contiennent l'ensemble des mots contenu de la recherche dans le titre.
En gros la recherche de l'utilisateur est récupérée, retravaillée (on enlève les un, une, des, le, la, les, l', etc...) et une fois que l'on à que les mots significatifs il faut comparer cette requête aux titres des mes articles et ressortir ceux dont l'ensemble des mots de la recherche se trouvent dedans (même si il ne sont pas dans le bon ordre).
----------------------------------------------------------------------------------
Exemple :
Recherche :
Élections 2012
Résultats :
Élections présidentielles 2012 Les élections législatives de 2012 2012 : Les élections vont elles changer les choses
----------------------------------------------------------------------------------
Voila j'espère que ce n'est pas trop confus.
Merci d'avance pour votre aide.
Jean.
A voir également:
- Sql comparaison chaine de caractere
- Caractère spéciaux - Guide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Comparaison million milliard - Accueil - Technologies
- Caractere vide - Guide
7 réponses
Re
Alors pour un de mes sites g procedé comme ca :
J'ai supprimé tout les mots de 2 lettres de la recherche puis j'ai mis les mots restant de la recherche dans un tableau .
J'ai ensuite fais une requete insert dans une table temporaire du resultat des recherches puis a lafin je me suis servi de ma table temporaire avec les bon titre pour afficher mes liens :
Pour reprendre ton exemple :
Recherche :
Élections de 2012
Résultats :
Élections présidentielles 2012
Les élections législatives de 2012
2012 : Les élections vont elles changer les choses
1er :
Tu fais un explode avec ESPACE :
Ensuite tu analyse ton tableau de resultat :
Tu fais une boucle sur ton tableau :
Puis :
If strlen($[Recherche1]) > 2 then
tu fais un insert into table_temp ...... values ( select tes champs from ta table where Titre like % $Tavariable %)
Puis tu te sert de ta table temporaire pour afficher tes liens
J'espere etre claire dans la facon de procede ;)
Alors pour un de mes sites g procedé comme ca :
J'ai supprimé tout les mots de 2 lettres de la recherche puis j'ai mis les mots restant de la recherche dans un tableau .
J'ai ensuite fais une requete insert dans une table temporaire du resultat des recherches puis a lafin je me suis servi de ma table temporaire avec les bon titre pour afficher mes liens :
Pour reprendre ton exemple :
Recherche :
Élections de 2012
Résultats :
Élections présidentielles 2012
Les élections législatives de 2012
2012 : Les élections vont elles changer les choses
1er :
Tu fais un explode avec ESPACE :
Ensuite tu analyse ton tableau de resultat :
Tu fais une boucle sur ton tableau :
Puis :
If strlen($[Recherche1]) > 2 then
tu fais un insert into table_temp ...... values ( select tes champs from ta table where Titre like % $Tavariable %)
Puis tu te sert de ta table temporaire pour afficher tes liens
J'espere etre claire dans la facon de procede ;)
Tu penses que la clause LIKE peut analyser les mots séparément et pas comme une chaine brut ou tout doit être dans le même ordre ? Ou peu t'être que je dois stocker ma recherche dans un array avec chaque mots séparés, mais dans ce cas SQL peu t'il parcourir un array PHP dans son ensemble sans avoir à préciser $array[1], $array[2], $array[3] ?
et si tu fait un and avec like
"SELECT ...... WHERE ton_champ_titre LIKE '%".$mot1."%' AND LIKE '%".$mot2."%' AND '%".$mot3."%'";
"SELECT ...... WHERE ton_champ_titre LIKE '%".$mot1."%' AND LIKE '%".$mot2."%' AND '%".$mot3."%'";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pas and mais or ;) et faut remettre le champ
"SELECT ...... WHERE ton_champ_titre LIKE '%".$mot1."%' or ton_champ_titre LIKE '%".$mot2."%' ......
"SELECT ...... WHERE ton_champ_titre LIKE '%".$mot1."%' or ton_champ_titre LIKE '%".$mot2."%' ......