Maison >base de données >tutoriel mysql >Comment puis-je extraire des chiffres de chaînes alphanumériques dans MySQL ?
Extraire des nombres de chaînes alphanumériques dans MySQL
Dans la programmation de bases de données, l'extraction de données spécifiques à partir de chaînes non structurées ou de types mixtes est une tâche courante. MySQL fournit une variété de fonctions et de techniques à cet effet, notamment la possibilité de séparer les nombres des chaînes.
Une façon d'extraire un nombre d'une chaîne consiste à profiter de la fonctionnalité de conversion de MySQL. En utilisant la fonction CAST(), vous pouvez implicitement convertir une chaîne en type numérique, en supprimant les caractères non numériques. Par exemple, CAST('1234abc' AS UNSIGNED) renvoie 1234.
Une autre façon consiste à utiliser une fonction personnalisée. Vous pouvez créer une solution réutilisable pour extraire des nombres en définissant une fonction qui parcourt la chaîne d'entrée, vérifie la valeur numérique de chaque caractère et concatène les nombres dans une nouvelle chaîne. Considérons la fonction suivante :
<code class="language-sql">CREATE FUNCTION `ExtractNumber`(in_string VARCHAR(50)) RETURNS INT NO SQL BEGIN DECLARE ctrNumber VARCHAR(50); DECLARE finNumber VARCHAR(50) DEFAULT ''; DECLARE sChar VARCHAR(1); DECLARE inti INTEGER DEFAULT 1; IF LENGTH(in_string) > 0 THEN WHILE(inti <= LENGTH(in_string)) DO SET sChar = SUBSTR(in_string, inti, 1); IF sChar BETWEEN '0' AND '9' THEN SET finNumber = CONCAT(finNumber, sChar); END IF; SET inti = inti + 1; END WHILE; RETURN CAST(finNumber AS UNSIGNED); ELSE RETURN 0; END IF; END</code>
Après avoir défini une fonction, vous pouvez l'appeler dans une requête pour extraire des nombres de n'importe quelle chaîne. Par exemple, la requête suivante renverra le nombre 1234 :
<code class="language-sql">SELECT ExtractNumber("abc1234def") AS number;</code>
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!