Maison >base de données >tutoriel mysql >Comment puis-je extraire des nombres à partir de chaînes alphanumériques en SQL ?

Comment puis-je extraire des nombres à partir de chaînes alphanumériques en SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-21 01:51:08565parcourir

How Can I Extract Numbers from Alphanumeric Strings in SQL?

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 :

  • 003Plan d'examen préliminaire
  • Coordination005
  • Bilan1000

Vous souhaitez rechercher :

  • 003
  • 005
  • 1000

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!

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