Extraire les données numériques d'une chaîne
Dans un environnement de base de données, il peut être nécessaire d'extraire des données numériques intégrées à partir d'une chaîne. Prenons l'exemple suivant :
<code>字符串 1: 003Preliminary Examination Plan 字符串 2: Coordination005 字符串 3: Balance1000sheet</code>
Le résultat souhaité est d'extraire uniquement les nombres de chaque chaîne :
<code>字符串 1: 003 字符串 2: 005 字符串 3: 1000</code>
Pour implémenter cela dans SQL, vous pouvez créer une fonction définie par l'utilisateur (UDF) personnalisée :
<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 GO</code>
Cet UDF identifie et supprime essentiellement tous les caractères non numériques de la chaîne d'entrée. Ensuite, il vérifie si la chaîne résultante peut être convertie en entier et la renvoie en conséquence.
Pour utiliser cette fonction, appliquez-la simplement à la colonne concernée :
<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) from table_name</code>
Cela renverra uniquement la partie numérique de la chaîne dans la colonne spécifiée. Pour les exemples de données fournis, les résultats correspondront aux valeurs attendues :
<code>003 005 1000</code>
Remarque : il y avait une erreur grammaticale dans l'instruction RETURN
du code d'origine, qui a été corrigée pour devenir un RETURN ISNULL(TRIM(@strAlphaNumeric), '0')
plus concis et efficace pour éviter des problèmes d'imbrication et de conversion de type inutiles. Cette fonction révisée est plus claire et plus facile à comprendre et à maintenir.
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!