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

Comment compter les occurrences de sous-chaînes et trier les résultats dans MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-25 09:40:54945parcourir

How to Count Substring Occurrences and Sort Results in MySQL?

Comptage des instances d'une sous-chaîne et tri par occurrence (MySQL)

Problème :

Vous souhaitez compter les occurrences d'une sous-chaîne spécifique dans un champ de chaîne dans une base de données MySQL. De plus, vous devez trier les résultats par ordre décroissant en fonction du nombre d'occurrences.

Solution :

Pour ce faire, vous pouvez utiliser ce qui suit query:

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): Cette fonction renvoie la longueur de la chaîne str.
  • REPLACE(str, substr, ''): Cette fonction remplace toutes les occurrences de substr dans str avec une chaîne vide, les supprimant efficacement.
  • CHAR_LENGTH(REPLACE(str, substr, '')): Ceci détermine la longueur de la chaîne avec la sous-chaîne supprimée.
  • (CHAR_LENGTH(str) - CHAR_LENGTH(REPLACE(str, substr, ''))) : Ceci calcule le nombre d'occurrences de substr en soustrayant la longueur de la chaîne modifiée de la chaîne d'origine.
  • CHAR_LENGTH(substr): Ceci spécifie la longueur de la sous-chaîne à compter.
  • cnt : Ceci est un alias pour le nombre calculé de occurrences.

La clause ORDER BY cnt DESC classe les résultats de la requête par ordre décroissant, en plaçant les enregistrements avec le plus grand nombre d'occurrences de sous-chaînes en haut.

Exemple d'utilisation :

Supposons que vous ayez un tableau appelé chaînes avec un texte de colonne contenant diverses chaînes. Pour compter les occurrences de la sous-chaîne "le" dans la colonne de texte et trier les résultats par nombre d'occurrences :

SELECT (CHAR_LENGTH(text) - CHAR_LENGTH(REPLACE(text, 'the', ''))) / CHAR_LENGTH('the') AS cnt
FROM strings
ORDER BY cnt DESC

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