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
Libérer: 2025-01-21 01:47:08
original
687 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal