Maison >base de données >tutoriel mysql >Comment extraire le nième mot et compter les occurrences de mots dans MySQL ?

Comment extraire le nième mot et compter les occurrences de mots dans MySQL ?

DDD
DDDoriginal
2024-12-08 03:32:11934parcourir

How to Extract the nth Word and Count Word Occurrences in MySQL?

Extraire le nième mot et compter les occurrences de mots dans une chaîne MySQL

Dans le domaine des requêtes de base de données, extraire des éléments de texte spécifiques d'une chaîne donnée peut être une exigence courante . MySQL, malgré ses robustes capacités SQL, ne prend pas en charge nativement l'extraction directe de parties de texte correspondant à une expression régulière.

Extraction du nième mot

Pour extraire le nième mot d'une chaîne MySQL, nous pouvons exploiter l'outil Fonctions SUBSTRING et LOCATE. SUBSTRING nous permet d'extraire une section spécifique de la chaîne, tandis que LOCATE trouve la première occurrence d'une sous-chaîne spécifiée.

Supposons que nous voulions extraire le deuxième mot de la chaîne "Ceci est un test". L'exemple de code suivant le démontre :

SUBSTRING(
  sentence,
  LOCATE(' ', sentence) + CHAR_LENGTH(' '),
  LOCATE(' ', sentence,
  ( LOCATE(' ', sentence) + 1 ) - ( LOCATE(' ', sentence) + CHAR_LENGTH(' ') )
)

Ce code identifie d'abord la position du premier caractère espace à l'aide de LOCATE. Il ajoute ensuite la longueur du caractère espace pour passer au début du deuxième mot. Enfin, il localise le caractère espace suivant, calcule sa longueur et le soustrait pour obtenir la longueur appropriée pour SUBSTRING.

Nombre d'occurrences de mots

Pour compter les occurrences de mots dans une chaîne MySQL, le GROUPE La clause BY est utilisée. Supposons que nous ayons un tableau contenant une colonne nommée « texte » avec diverses entrées de texte. La requête suivante compterait les occurrences de chaque mot dans la colonne "texte" :

SELECT word, COUNT(*)
FROM (
  SELECT sentence, SUBSTRING_INDEX(sentence, ' ', occurrence) AS word
  FROM (
    SELECT sentence,
    ROW_NUMBER() OVER (PARTITION BY sentence ORDER BY LOCATE(' ', sentence)) AS occurrence
    FROM table_name
  ) t
) subquery
GROUP BY word

Cette requête utilise une sous-requête pour extraire chaque mot des phrases, en les attribuant à la colonne "mot". ROW_NUMBER est utilisé pour attribuer un numéro d'occurrence à chaque mot dans une phrase, garantissant que chaque mot a une valeur d'occurrence unique. La requête externe regroupe ensuite le « mot » extrait pour compter ses occurrences.

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