Heim >Datenbank >MySQL-Tutorial >Wie kann ich numerische Werte aus Zeichenfolgen in SQL extrahieren?

Wie kann ich numerische Werte aus Zeichenfolgen in SQL extrahieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-21 01:36:08449Durchsuche

How Can I Extract Numeric Values from Strings in SQL?

Numerische Daten aus String extrahieren

In einer Datenbankumgebung kann es erforderlich sein, eingebettete numerische Daten aus einer Zeichenfolge zu extrahieren. Betrachten Sie das folgende Beispiel:

<code>字符串 1: 003Preliminary Examination Plan   
字符串 2: Coordination005  
字符串 3: Balance1000sheet</code>

Das gewünschte Ergebnis besteht darin, nur die Zahlen aus jeder Zeichenfolge zu extrahieren:

<code>字符串 1: 003
字符串 2: 005
字符串 3: 1000</code>

Um dies in SQL zu implementieren, können Sie eine benutzerdefinierte benutzerdefinierte Funktion (UDF) erstellen:

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

Diese UDF identifiziert und entfernt im Wesentlichen alle nicht numerischen Zeichen aus der Eingabezeichenfolge. Anschließend prüft es, ob die resultierende Zeichenfolge in eine Ganzzahl konvertiert werden kann, und gibt sie entsprechend zurück.

Um diese Funktion zu nutzen, wenden Sie sie einfach auf die entsprechende Spalte an:

<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) 
from table_name</code>

Dadurch wird nur der numerische Teil der Zeichenfolge in der angegebenen Spalte zurückgegeben. Für die bereitgestellten Beispieldaten stimmen die Ergebnisse mit den erwarteten Werten überein:

<code>003
005
1000</code>

Hinweis: Es gab einen grammatikalischen Fehler in der RETURN-Anweisung im Originalcode, der in ein prägnanteres und effektiveres RETURN ISNULL(TRIM(@strAlphaNumeric), '0') korrigiert wurde, um unnötige Verschachtelungs- und Typkonvertierungsprobleme zu vermeiden. Diese überarbeitete Funktion ist klarer und einfacher zu verstehen und zu warten.

Das obige ist der detaillierte Inhalt vonWie kann ich numerische Werte aus Zeichenfolgen in SQL extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn