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

  FORUM HardWare.fr
  Programmation

  [SQL] Comment faire une recherche sur seulement des mots entiers ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Comment faire une recherche sur seulement des mots entiers ?

n°67989
Stligar
Posté le 28-10-2001 à 15:21:53  profilanswer
 

Je m'explique si je fais une recherche dans ma base mysql sur le mot "Ours" je me retrouve avec tous les mots qui contiennent cette chaine de caracteres donc dans mes resultats j'aurai notamment "jours", "cours" ...  
 
Est ce qu'il y a une fonction inclut dans php qui permet de limiter cette recherche seulement aux mots entiers (entoures de 2 espaces donc)
 
Merci

 

[edtdd]--Message édité par Stligar--[/edtdd]


---------------
Vente privee - Dieu t'a donné deux oreilles et une bouche afin que tu écoutes deux fois plus que tu ne parles.
mood
Publicité
Posté le 28-10-2001 à 15:21:53  profilanswer
 

n°67996
Stligar
Posté le 28-10-2001 à 16:17:40  profilanswer
 

:bounce:

n°67997
Profil sup​primé
Posté le 28-10-2001 à 16:23:05  answer
 

Il doit y avoir un truc plus propre mais tu pourrais faire un  
 
WHERE phrase like ' ours ' OR phrase like 'ours ' OR phrase like ' ours'
 
Mais il doit y avoir un truc plus propre mais j'en ai jamais eu besoin so j'ai pas cherché :-/

n°68000
Stligar
Posté le 28-10-2001 à 16:29:53  profilanswer
 

Oulala c'est en effet pas tres propre :)
 
Merci pour la reponse mais si qq. avait une autre idee je serai aussi preneur :)

n°68098
jupiler
Un cousin...
Posté le 29-10-2001 à 09:12:21  profilanswer
 

je n'ai jamais pratiqué mysql mais un select ... where champ = 'ours' à la place d'un like ne doit ressortir que des valeurs exactes


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°68107
Sebastien
Posté le 29-10-2001 à 10:02:59  profilanswer
 

Ouais à la base le = te retourne que la valeur exact, et le like des morceaux de chaines.
 
A koi ressemble ta requête ?

n°68618
Stligar
Posté le 31-10-2001 à 03:37:52  profilanswer
 

Merci pour vos reponse, mais apparement le = marche pas avec ce genre de chaine (ou alors je m'y prends tres tres mal).
 
 

Code :
  1. $alapeche = "WHERE (keywords like '%$recherche%')";


 
Donc en gros c'est ma requete, ou keywords est un champ comportant plusieurs mots.
celle qui suit ne marche pas  
 

Code :
  1. $alapeche = "WHERE (keywords='%$recherche%')";


 
et j'ai finalement contourne le probleme en mettant des espaces avant et apres le mot recherche
 

Code :
  1. $alapeche = "WHERE (keywords like ' %$recherche% ')";


 
Mais bon je suis pas completement satisfait de la derniere methode, donc si qq. a une idee ?  
 
Merci  :hello:

 

[edtdd]--Message édité par Stligar--[/edtdd]

n°68619
youdontcar​e
Posté le 31-10-2001 à 04:38:08  profilanswer
 

le '=' ne matche que deux strings identiques. dans une table qui comporte
 
1 - 'vive les cours de maths'
2 - 'ours'
3 - 'OURS'
4 - 'J'AIME LES OURS'
5 - 'ohhh le joli ours'
 
select ... where .... = 'ours' ne retournera que la deuxième entrée.
 
... depuis quand 'bonjour' prend un 'S' ? :??: ...
 
il faut utiliser les expressions régulières, et y'a un truc prévu dans mysql directement pour ( http://www.mysql.com/doc/R/e/Regexp.html ) :
 
select .... where keywords regexp '[[:<:]]ours[[:>:]]';
 
attention, c'est case sensitive, donc dans la table d'exemple cette requête ne retournera que les entrées 2 et 5.

 

[edtdd]--Message édité par youdontcare--[/edtdd]

n°68620
Stligar
Posté le 31-10-2001 à 04:44:17  profilanswer
 

youdontcare a écrit a écrit :

... depuis quand 'bonjour' prend un 'S' ? :??: ...
 




 
suis nul en orthographe et alors  ??  :D  
 
En tout cas merci pour ta reponse, vais aller etudier ça de plus pres

n°68621
Stligar
Posté le 31-10-2001 à 04:53:03  profilanswer
 

C'est exactement ce que je recherchais merci bcp !!

mood
Publicité
Posté le 31-10-2001 à 04:53:03  profilanswer
 

n°2242228
bluemanca
Posté le 04-11-2014 à 18:00:52  profilanswer
 

Personnellement, j'utilise ceci dans mes requêtes SQL:
 

Code :
  1. SELECT * From la_table_voulue WHERE champ_désiré REGEXP '([^a-z0-9àáâãäåòóôõöœøèéêëçìíîïùúûüÿñ]|^)le_mot_entier_à_rechercher([^a-z0-9àáâãäåòóôõöœøèéêëçìíîïùúûüÿñ]|$)'


 
(Votre table soit être case insensitive)

n°2242249
dreameddea​th
Posté le 04-11-2014 à 22:39:11  profilanswer
 

pour les REGEXP, tout moteur normalement constitué a des "classes" de caractères pour les groupes complexes.
 
Ton expression est bien plus fonctionnelle comme ça (utilisation de la classe "alnum" ) :

Code :
  1. select VAL from test where val REGEXP '(^|[^[:alnum:]])est([^[:alnum:]]|$)';


Message édité par dreameddeath le 04-11-2014 à 22:40:38
n°2242263
rufo
Pas me confondre avec Lycos!
Posté le 05-11-2014 à 09:20:20  profilanswer
 

bluemanca a écrit :

Personnellement, j'utilise ceci dans mes requêtes SQL:
 

Code :
  1. SELECT * From la_table_voulue WHERE champ_désiré REGEXP '([^a-z0-9àáâãäåòóôõöœøèéêëçìíîïùúûüÿñ]|^)le_mot_entier_à_rechercher([^a-z0-9àáâãäåòóôõöœøèéêëçìíîïùúûüÿñ]|$)'


 
(Votre table soit être case insensitive)


Joli déterrage de topic 13 ans après...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

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

  [SQL] Comment faire une recherche sur seulement des mots entiers ?

 

Sujets relatifs
[XML] Recherche liens utiles, librairies java[ARM C/C++] Recherche compilateur
Access, asp et requete SQL qui deconne....[PHP] [mySQL] moteur de recherche
Pl/SQLAPOSTROPHE DANS UNE REQUETE SQL - VISUAL BASIC
[SQL SERVER 7.0] Administrer la base a distanceA la recherche du .h perdu!!!
[C++] Recherche cours sur les sockets[php] session_start seulement s'il y a une session en cours
Plus de sujets relatifs à : [SQL] Comment faire une recherche sur seulement des mots entiers ?


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