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!