Maison >base de données >tutoriel mysql >Comment puis-je extraire des nombres à partir de chaînes à l'aide d'une fonction SQL définie par l'utilisateur ?

Comment puis-je extraire des nombres à partir de chaînes à l'aide d'une fonction SQL définie par l'utilisateur ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-21 01:47:08637parcourir

How Can I Extract Numbers from Strings Using a SQL User-Defined Function?

Extraction de données numériques à partir de chaînes dans SQL à l'aide d'une fonction définie par l'utilisateur

Ce guide montre comment créer une fonction définie par l'utilisateur (UDF) SQL pour extraire efficacement uniquement les caractères numériques d'une chaîne. Il s'agit d'une tâche courante dans le nettoyage et la manipulation des données.

Création de l'UDF :

Le code SQL suivant définit une UDF nommée dbo.udf_GetNumeric qui prend une chaîne en entrée et renvoie la partie numérique extraite :

<code class="language-sql">CREATE FUNCTION dbo.udf_GetNumeric
(
  @strAlphaNumeric VARCHAR(256)
)
RETURNS VARCHAR(256)
AS
BEGIN
    DECLARE @intAlpha INT
    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
    BEGIN
        WHILE @intAlpha > 0
        BEGIN
            SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
            SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
        END
    END
    RETURN ISNULL(TRIM(@strAlphaNumeric), '0')
END</code>

Application de l'UDF :

Une fois l'UDF créée, utilisez l'instruction SELECT suivante pour l'appliquer à une colonne de votre table :

<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) AS ExtractedNumber
FROM table_name;</code>

Remplacez column_name par le nom réel de la colonne contenant les chaînes et table_name par le nom de votre table. Le résultat sera une nouvelle colonne, ExtractedNumber, contenant uniquement les valeurs numériques.

Exemple illustratif :

Considérez cet exemple de données :

String 1 String 2 String 3
003Preliminary Examination Plan Coordination005 Balance1000sheet

Après avoir appliqué l'UDF, le résultat sera :

String 1 String 2 String 3
003 005 1000

Explication de la fonction :

La fonction dbo.udf_GetNumeric utilise PATINDEX pour localiser le premier caractère non numérique. La fonction STUFF supprime ensuite ce caractère. Ce processus se répète jusqu'à ce que tous les caractères non numériques soient éliminés, ne laissant que les chiffres. Les fonctions ISNULL et TRIM gèrent les valeurs nulles potentielles et les espaces de début/fin.

Autres améliorations (future mise à jour) : Une explication plus détaillée et des améliorations potentielles de cette fonction seront ajoutées dans une future mise à jour.

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