Comment faire une recherche sur seulement des mots entiers ? [SQL] - Programmation
Marsh Posté le 28-10-2001 à 16:23:05
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é :-/
Marsh Posté le 28-10-2001 à 16:29:53
Oulala c'est en effet pas tres propre
Merci pour la reponse mais si qq. avait une autre idee je serai aussi preneur
Marsh Posté le 29-10-2001 à 09:12:21
je n'ai jamais pratiqué mysql mais un select ... where champ = 'ours' à la place d'un like ne doit ressortir que des valeurs exactes
Marsh Posté le 29-10-2001 à 10:02:59
Ouais à la base le = te retourne que la valeur exact, et le like des morceaux de chaines.
A koi ressemble ta requête ?
Marsh Posté le 31-10-2001 à 03:37:52
Merci pour vos reponse, mais apparement le = marche pas avec ce genre de chaine (ou alors je m'y prends tres tres mal).
Code :
|
Donc en gros c'est ma requete, ou keywords est un champ comportant plusieurs mots.
celle qui suit ne marche pas
Code :
|
et j'ai finalement contourne le probleme en mettant des espaces avant et apres le mot recherche
Code :
|
Mais bon je suis pas completement satisfait de la derniere methode, donc si qq. a une idee ?
Merci
[edtdd]--Message édité par Stligar--[/edtdd]
Marsh Posté le 31-10-2001 à 04:38:08
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]
Marsh Posté le 31-10-2001 à 04:44:17
youdontcare a écrit a écrit : ... depuis quand 'bonjour' prend un 'S' ? ... |
suis nul en orthographe et alors ??
En tout cas merci pour ta reponse, vais aller etudier ça de plus pres
Marsh Posté le 04-11-2014 à 18:00:52
Personnellement, j'utilise ceci dans mes requêtes SQL:
Code :
|
(Votre table soit être case insensitive)
Marsh Posté le 04-11-2014 à 22:39:11
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 :
|
Marsh Posté le 05-11-2014 à 09:20:20
bluemanca a écrit : Personnellement, j'utilise ceci dans mes requêtes SQL:
|
Joli déterrage de topic 13 ans après...
Marsh Posté le 28-10-2001 à 15:21:53
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.