Aller au contenu

Compter le nb d'occurence d'un mot dans un champ


Mess

Sujets conseillés

Bonjour,

je suis un p'tit nouveau sur ce forum, très intéressant en passant surtout coté optimisation des standards, et je me pose une petite question, à laquelle je n'ai pu trouvé de réponse..

est-il possible de compter le nombre d'occurence d'un mot dans un champ en SQL (avec MySQL).. je ne crois pas mais bon.. on sait jamais!

Je sais que je peux le faire en php après avoir obtenu mon recordset, mais je préférerais le faire directement en SQL... c'est dans le but de créer un critère de pertinence pour un moteur de recherche qui lui cherche dans la BD du site...

merci bien d'avance de vos idées..

-Mess

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

pour trouver un mot, dans une base de données, il faut faire:

SELECT champ FROM table WHERE champ LIKE '%mot%'

Pour trouver le nombre de fois, sans pour autant dépiler les champs, alors il faut utiliser count()

SELECT count(champ) FROM table WHERE champ LIKE '%mot%'

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

je me suis peut-être mal exprimé..

je veux compter le nombre d'occurence d'un mot dans un champ, et ce pour tous les champs trouvés par la clause where..

exemple :

champ : bla blo bla bli blu bla

je veux savoir si il existe une fonction du genre :

CompterOccurence(dans champ, pour le mot "bla"), donc qui retournerait 3...

merci pour la rapidité :P

-Mess

Lien vers le commentaire
Partager sur d’autres sites

Alors...

En fait, il s'avère que cela varie beaucoup en fonction des différentes versions de mysql. Essaies ceci, tu me dis si ca marche ou pas ;)

SELECT Identifiant,CHARACTER_LENGTH('mot') FROM table GROUP BY  CHARACTER_LENGTH('mot')

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Hmm, j'ai fait un petit test.. et je ne crois pas que ça marche..

CHARACTER_LENGTH('bla') donnera toujours 3, et faire un GROUP BY 3 ...

j'ai peut-être mal compris .. :huh:

-Mess

Modifié par Mess
Lien vers le commentaire
Partager sur d’autres sites

Tu peux te tourner vers

MATCH(col1, col2, col3, ...) AGAINST(expr)

qui renvoie un nombre décrivant la pertinence de l'expression 'expr' dans les colonnes 'col1', 'col2', 'col3',...

Je n'ai jamais utilisé ce truc alors je ne puis aller plus loin... J'espère que c'est une indication qui te sera utile.

Lien vers le commentaire
Partager sur d’autres sites

C'est pas exactement ce que je cherchais, mais c'est très comparable!

En effet, ça retourne un degré de pertinence tout dépendant du nombre de fois que le mot est présent dans un ou plusieurs champs.

merci énormément!

-Mess

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...