Extraire les nombres d'une chaîne alphanumérique en SQL
Question :
Vous avez des chaînes contenant des caractères alphanumériques et vous devez extraire uniquement les valeurs numériques. Par exemple, étant donné la chaîne suivante :
Vous souhaitez rechercher :
Solution :
Pour extraire des nombres d'une chaîne à l'aide de SQL, vous pouvez utiliser des fonctions définies par l'utilisateur (UDF). Créez l'UDF suivante :
<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>
Utilisation :
Après avoir créé l'UDF, vous pouvez l'utiliser pour extraire des nombres d'une chaîne :
<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) FROM table_name</code>
Par exemple :
<code class="language-sql">SELECT dbo.udf_GetNumeric('003Preliminary Examination Plan')</code>
Référence :
Remarque :
Cette solution génère des nombres sous forme de chaînes. Si vous avez besoin d'entiers, vous pouvez utiliser la fonction CAST() pour les convertir. Le code ci-dessus a été simplifié pour éviter une logique complexe inutile et garantir que la fonction renvoie toujours une valeur.
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!