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

 


Dernière réponse
Sujet : [SQL] Comment faire une recherche sur seulement des mots entiers ?
rufo

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...


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
rufo

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...

dreameddeath 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:]]|$)';

bluemanca 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)

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

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

youdontcare 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]

Stligar 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]

Sebastien Ouais à la base le = te retourne que la valeur exact, et le like des morceaux de chaines.
 
A koi ressemble ta requête ?
jupiler je n'ai jamais pratiqué mysql mais un select ... where champ = 'ours' à la place d'un like ne doit ressortir que des valeurs exactes
Stligar Oulala c'est en effet pas tres propre :)
 
Merci pour la reponse mais si qq. avait une autre idee je serai aussi preneur :)
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é :-/
Stligar :bounce:
Stligar 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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)