Maison >base de données >tutoriel mysql >Comment compter les occurrences de sous-chaînes et les trier par fréquence dans MySQL ?

Comment compter les occurrences de sous-chaînes et les trier par fréquence dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 05:57:14877parcourir

How to Count Substring Occurrences and Order by Frequency in MySQL?

Comptage des occurrences de sous-chaînes et classement par fréquence dans MySQL

Problème :

Votre base de données MySQL contient un champ de chaîne, et vous devez :

  1. Compter les occurrences de une sous-chaîne spécifique dans chaque chaîne.
  2. Classez les résultats par ordre décroissant du nombre d'occurrences de sous-chaîne.

Solution :

Pour y parvenir , vous pouvez utiliser les éléments suivants code :

SELECT (CHAR_LENGTH(str) - CHAR_LENGTH(REPLACE(str, substr, ''))) / CHAR_LENGTH(substr) AS cnt
FROM table_name
ORDER BY cnt DESC

Explication :

  • CHAR_LENGTH(str) - CHAR_LENGTH(REPLACE(str, substr, '')) calcule le nombre de sous-chaîne occurrences dans str.
  • CHAR_LENGTH(substr) est la longueur du substring.
  • cnt est un alias pour le nombre d'occurrences calculé.
  • La clause ORDER BY cnt DESC trie les résultats par ordre décroissant des occurrences de sous-chaîne.

Exemple Utilisation :

mysql> select (CHAR_LENGTH('asd') - CHAR_LENGTH(REPLACE('asd', 's', ''))) / CHAR_LENGTH('s');

+-----------------------------------------------------------------+
| (CHAR_LENGTH('asd') - CHAR_LENGTH(REPLACE('asd', 's', ''))) / CHAR_LENGTH('s') |
+-----------------------------------------------------------------+
|                                                          1.0000 |
+-----------------------------------------------------------------+

mysql> select host, (CHAR_LENGTH(host) - CHAR_LENGTH(REPLACE(host, 'l', ''))) / CHAR_LENGTH('l') AS cnt from user;

+-----------+--------+
| host      | cnt    |
+-----------+--------+
| 127.0.0.1 | 0.0000 |
| honeypot  | 0.0000 |
| honeypot  | 0.0000 |
| localhost | 2.0000 |
| localhost | 2.0000 |
+-----------+--------+

Remarque :

Cette méthode est fiable mais présente l'inconvénient potentiel d'être potentiellement gourmande en ressources pour les grands ensembles de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn