SplitString als Funktion anlegen

SplitString als Funktion anlegen

Der angegebene SQL-Code erstellt eine benutzerdefinierte Funktion namens getSplitString. Diese Funktion dient dazu, einen eingegebenen String basierend auf einem angegebenen Trennzeichen (z.B. ein Komma oder ein Semikolon) zu teilen und die resultierenden Teile als separate Zeilen in einer Tabelle zurückzugeben.

CREATE FUNCTION [dbo].[getSplitString] (
    @Input NVARCHAR(MAX),
    @Delimiter CHAR(1)
)
RETURNS @Output TABLE (
    Item NVARCHAR(1000)
)
AS
BEGIN
    DECLARE @StartIndex INT = 1, @EndIndex INT

    WHILE CHARINDEX(@Delimiter, @Input, @StartIndex) > 0
    BEGIN
        SET @EndIndex = CHARINDEX(@Delimiter, @Input, @StartIndex)

        INSERT INTO @Output (Item)
        SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - @StartIndex)

        SET @StartIndex = @EndIndex + 1
    END

    IF @StartIndex <= LEN(@Input)
    BEGIN
        INSERT INTO @Output (Item)
        SELECT SUBSTRING(@Input, @StartIndex, LEN(@Input) - @StartIndex + 1)
    END

    RETURN
END
GO

Sie nutzt eine WHILE-Schleife, um durch den Eingabestring zu iterieren und Teile des Strings in eine Ausgabetabelle zu fügen, basierend auf dem angegebenen Trennzeichen (@Delimiter). Die Funktion ist so konzipiert, dass sie den letzten Teilstring hinzufügt, selbst wenn dieser kein abschließendes Trennzeichen hat.

Hier ist eine Schritt-für-Schritt-Erklärung, wie die Funktion arbeitet:

  1. Initialisierung: Zwei lokale Variablen @StartIndex und @EndIndex werden deklariert. @StartIndex wird mit 1 initialisiert, was die Zeichenposition am Anfang des Eingabestrings markiert.
  2. Beginn der WHILE-Schleife: Die Funktion tritt in eine WHILE-Schleife ein, die solange läuft, bis es keine Instanz des Trennzeichens (@Delimiter) im Teil des Strings gibt, der nach @StartIndex beginnt.
  3. Suche nach dem Trennzeichen: Mit CHARINDEX wird die Position des nächsten Trennzeichens im Eingabestring ab @StartIndex gesucht und @EndIndex zugewiesen.
  4. Extrahierung und Einfügung des Teilstrings: Der Teilstring zwischen @StartIndex und dem Zeichen vor @EndIndex wird extrahiert und in die Ausgabetabelle eingefügt.
  5. Aktualisierung von @StartIndex: @StartIndex wird aktualisiert, um auf das Zeichen direkt nach dem gefundenen Trennzeichen zu zeigen, indem man @EndIndex + 1 zuweist.
  6. Behandlung des letzten Teilstrings: Nachdem die Schleife beendet ist, prüft die IF-Bedingung, ob @StartIndex kleiner oder gleich der Gesamtlänge des Eingabestrings ist. Ist das der Fall, bedeutet dies, dass es einen letzten Teilstring gibt, der nach dem letzten Trennzeichen kommt. Dieser letzte Teilstring wird dann ebenfalls in die Ausgabetabelle eingefügt.
  7. Rückgabe: Die Funktion gibt die gefüllte Ausgabetabelle zurück, die alle Teilstrings enthält, die durch das angegebene Trennzeichen getrennt sind.

Beispiel zur Verwendung:

Angenommen, Sie möchten den String „A,B,C,D“ anhand des Kommas teilen. Sie könnten die Funktion wie folgt aufrufen:

SELECT * FROM dbo.getSplitString('A,B,C,D', ',')

Das Ergebnis wäre eine Tabelle mit den Werten:

Item
----
A
B
C
D

Diese Funktion ist nützlich, wenn Sie Strings teilen müssen, die durch ein bestimmtes Trennzeichen getrennt sind, und Sie die Teile in tabellarischer Form zurückgeben möchten.

Wie hat dir der Artikel gefallen?

Vielen Dank für dein Feedback!
About Frank 83 Articles

Ich bin Frank, Data Warehouse und BI-Entwickler mit langjähriger Expertise in diesem Bereich. Ich verfüge über mehr als 20 Jahre Berufserfahrung im DWH Umfeld. Das Analysieren und Interpretieren von Zahlen, Daten und Fakten ist meine große Leidenschaft, aus diesem Grunde ist auch diese Seite hier entstanden.

Be the first to comment

Leave a Reply

Your email address will not be published.


*