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 ?
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!