Maison >base de données >tutoriel mysql >Comment puis-je extraire des chiffres de chaînes alphanumériques dans MySQL ?

Comment puis-je extraire des chiffres de chaînes alphanumériques dans MySQL ?

DDD
DDDoriginal
2025-01-09 16:46:42887parcourir

How Can I Extract Digits from Alphanumeric Strings in 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!

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