Maison > base de données > tutoriel mysql > Comment puis-je extraire des valeurs numériques de chaînes en SQL ?

Comment puis-je extraire des valeurs numériques de chaînes en SQL ?

Patricia Arquette
Libérer: 2025-01-21 01:36:08
original
442 Les gens l'ont consulté

How Can I Extract Numeric Values from Strings in SQL?

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

Le résultat souhaité est d'extraire uniquement les nombres de chaque chaîne :

<code>字符串 1: 003
字符串 2: 005
字符串 3: 1000</code>
Copier après la connexion

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

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

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

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!

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