Maison >base de données >tutoriel mysql >Comment extraire des chiffres consécutifs d'un champ de texte MySQL et appliquer des critères supplémentaires ?

Comment extraire des chiffres consécutifs d'un champ de texte MySQL et appliquer des critères supplémentaires ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 13:15:19629parcourir

How to Extract Consecutive Digits from a MySQL Text Field and Apply Additional Criteria?

Extraire des chiffres consécutifs d'un champ de texte MySQL

Dans MySQL, la requête suivante peut détecter des champs de texte contenant des nombres à 2 chiffres :

SELECT `id`, `originaltext` FROM `source` WHERE `originaltext` regexp '[0-9][0-9]'

Cependant, pour manipuler ces nombres en tant que champ distinct, un traitement supplémentaire est nécessaire. Voici deux solutions potentielles :

Utilisation de LIB_MYSQLUDF_PREG

LIB_MYSQLUDF_PREG est une bibliothèque MySQL qui améliore la fonctionnalité des expressions régulières. Il introduit des fonctions comme PREG_CAPTURE, qui peuvent extraire des correspondances d'une chaîne.

Pour utiliser cette bibliothèque, vous devez l'installer sur votre serveur MySQL. Une fois installé, vous pouvez utiliser la requête suivante pour extraire des chiffres consécutifs :

SELECT `id`, PREG_CAPTURE('[0-9][0-9]', `originaltext`) AS `digits` FROM `source`

Utilisation d'une fonction MySQL personnalisée

Vous pouvez également définir une fonction MySQL personnalisée qui effectue l'extraction. Par exemple, la fonction suivante extraira la première séquence de chiffres correspondante la plus longue :

CREATE FUNCTION REGEXP_EXTRACT(string TEXT, exp TEXT)
RETURNS TEXT
DETERMINISTIC
BEGIN
  DECLARE s INT DEFAULT 1;
  ...
  -- Implementation to extract the matching digits
  ...
END

Pour utiliser cette fonction, appelez-la comme suit :

SELECT `id`, REGEXP_EXTRACT(`originaltext`, '[0-9][0-9]') AS `digits` FROM `source`

Critères supplémentaires ( Nombres > 20)

Pour ajouter le critère selon lequel les nombres doivent être supérieurs à 20, ajoutez simplement cette condition à la clause WHERE de l'une ou l'autre requête :

WHERE `digits` > 20

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