Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit einer benutzerdefinierten SQL-Funktion Zahlen aus Zeichenfolgen extrahieren?

Wie kann ich mit einer benutzerdefinierten SQL-Funktion Zahlen aus Zeichenfolgen extrahieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-21 01:47:08707Durchsuche

How Can I Extract Numbers from Strings Using a SQL User-Defined Function?

Extrahieren numerischer Daten aus Zeichenfolgen in SQL mithilfe einer benutzerdefinierten Funktion

Diese Anleitung zeigt, wie Sie eine benutzerdefinierte SQL-Funktion (UDF) erstellen, um effizient nur numerische Zeichen aus einer Zeichenfolge zu extrahieren. Dies ist eine häufige Aufgabe bei der Datenbereinigung und -manipulation.

Erstellen der UDF:

Der folgende SQL-Code definiert eine UDF mit dem Namen dbo.udf_GetNumeric, die eine Zeichenfolge als Eingabe akzeptiert und den extrahierten numerischen Teil zurückgibt:

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

Anwenden der UDF:

Sobald die UDF erstellt ist, verwenden Sie die folgende SELECT-Anweisung, um sie auf eine Spalte in Ihrer Tabelle anzuwenden:

<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) AS ExtractedNumber
FROM table_name;</code>

Ersetzen Sie column_name durch den tatsächlichen Namen der Spalte, die die Zeichenfolgen enthält, und table_name durch den Namen Ihrer Tabelle. Das Ergebnis ist eine neue Spalte ExtractedNumber, die nur die numerischen Werte enthält.

Anschauliches Beispiel:

Bedenken Sie diese Beispieldaten:

String 1 String 2 String 3
003Preliminary Examination Plan Coordination005 Balance1000sheet

Nach dem Anwenden der UDF lautet die Ausgabe:

String 1 String 2 String 3
003 005 1000

Funktionserklärung:

Die Funktion dbo.udf_GetNumeric verwendet PATINDEX, um das erste nicht numerische Zeichen zu finden. Die Funktion STUFF entfernt dann dieses Zeichen. Dieser Vorgang wiederholt sich, bis alle nicht numerischen Zeichen entfernt sind und nur noch die Zahlen übrig bleiben. Die Funktionen ISNULL und TRIM verarbeiten potenzielle Nullwerte und führende/nachgestellte Leerzeichen.

Weitere Verbesserungen (zukünftiges Update): Eine detailliertere Erklärung und mögliche Verbesserungen dieser Funktion werden in einem zukünftigen Update hinzugefügt.

Das obige ist der detaillierte Inhalt vonWie kann ich mit einer benutzerdefinierten SQL-Funktion Zahlen aus Zeichenfolgen 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