Comptage des instances de sous-chaîne et classement des résultats dans MySQL
Dans MySQL, vous pouvez compter les occurrences d'une sous-chaîne dans un champ de chaîne et trier les résultats basés sur la fréquence de ces occurrences à l'aide de la requête suivante :
SELECT (CHAR_LENGTH(str) - CHAR_LENGTH(REPLACE(str, substr, ''))) / CHAR_LENGTH(substr) AS cnt ... ORDER BY cnt DESC
Cette expression calcule le nombre de sous-chaînes par diviser la différence entre la longueur de la chaîne d'origine et la longueur de la chaîne avec la sous-chaîne remplacée par une chaîne vide par la longueur de la sous-chaîne. Les résultats sont ensuite triés par ordre décroissant du nombre.
Exemple :
Considérons une table avec une colonne hôte qui contient les valeurs suivantes :
'127.0.0.1' 'honeypot' 'honeypot' 'localhost' 'localhost'
Pour compter les occurrences de la sous-chaîne 'l' dans la colonne hôte et trier les résultats par nombre, vous utiliserez ce qui suit requête :
SELECT host, (CHAR_LENGTH(host) - CHAR_LENGTH(REPLACE(host, 'l', ''))) / CHAR_LENGTH('l') AS cnt FROM user ORDER BY cnt DESC
Les résultats seraient :
| host | cnt | |-----------+--------| | localhost | 2.0000 | | localhost | 2.0000 | | honeypot | 0.0000 | | honeypot | 0.0000 | | 127.0.0.1 | 0.0000 |
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!