Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit einer benutzerdefinierten SQL-Funktion Zahlen aus Zeichenfolgen extrahieren?
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!