Extraire le Nième mot et compter les occurrences de mots dans MySQL
La question posée concerne la possibilité d'une requête MySQL pouvant extraire un mot spécifique à partir d'une chaîne de texte et compter ses occurrences. L'exemple fourni cherche à extraire le deuxième mot du texte.
Solution de requête pour Postgres
Bien que MySQL ne prenne pas en charge nativement l'extraction directe de correspondances d'expressions régulières, d'autres bases de données comme PostgreSQL proposer une approche plus simple. Dans PostgreSQL, la requête suivante peut être utilisée :
SELECT word, count(*) FROM ( SELECT SPLIT_PART(text, ' ', 2) AS word FROM (SELECT 'THIS IS A TEST' AS text) AS tmp ) AS words GROUP BY word;
Cette requête utilise la fonction SPLIT_PART pour diviser le texte en mots individuels en fonction des espaces et extrait le deuxième mot. Le tableau résultant regroupe les mots en fonction de leur occurrence.
Solution de contournement pour MySQL
Pour MySQL, une approche différente est requise car l'extraction directe d'expressions régulières n'est pas prise en charge. Une solution de contournement consiste à utiliser une combinaison de fonctions de sous-chaîne et de localisation :
SELECT SUBSTRING( text, LOCATE(' ', text) + CHAR_LENGTH(' '), LOCATE(' ', text, ( LOCATE(' ', text) + 1 ) - ( LOCATE(' ', text) + CHAR_LENGTH(' ') ) ) AS word, count(*) FROM (SELECT 'THIS IS A TEST' AS text) AS tmp GROUP BY word;
Cette requête localise la position du premier espace dans le texte, qui se trouverait après le premier mot. Il ajoute ensuite la longueur d'un espace à cette position pour lancer l'extraction du deuxième mot. La longueur de la sous-chaîne extraite est calculée en localisant l'espace suivant et en en soustrayant la position de départ.
Cette méthode nécessite un ajustement pour extraire différents nièmes mots.
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!