Substring() in SQL Server: Anwendung anhand eines Beispiels
⚡ Intelligente Zusammenfassung
SUBSTRING() in SQL Server extracts ist ein Teil eines Zeichens, Textes oder Binärausdrucks, der eine festgelegte Anzahl von Zeichen ab einer gewählten Startposition zurückgibt und sich natürlich mit CHARINDEX für die auf Trennzeichen basierende Analyse kombinieren lässt.
Was ist Substring()?
SUBSTRING() ist eine Funktion in SQL Diese Funktion ermöglicht es dem Benutzer, je nach Bedarf eine Teilzeichenkette aus einer beliebigen Zeichenkette zu extrahieren. Beispiel: SUBSTRING()trac`ts` ist eine Zeichenkette bestimmter Länge, die an einer bestimmten Position in einer Eingabezeichenkette beginnt. Die Funktion `SUBSTRING()` in SQL dient dazu, einen bestimmten Teil der Zeichenkette zurückzugeben.
Syntax für Substring()
SUBSTRING(Expression, Starting Position, Total Length)
Hier:
- Der SUBSTRING()-Ausdruck in SQL Server Es kann sich um beliebige Zeichen, Binärdaten, Text oder Bilder handeln. Der Ausdruck ist die Quellzeichenkette, aus der die Teilzeichenkette extrahiert wird.
- Die Startposition bestimmt die Position im Ausdruck, ab der die neue Teilzeichenkette beginnen soll.
- Die Gesamtlänge ist die erwartete Gesamtlänge der resultierenden Teilzeichenkette des Ausdrucks, beginnend an der Startposition.
Regeln für die Verwendung von SUBSTRING()
- Alle drei Argumente sind in der MS SQL-Funktion SUBSTRING() obligatorisch.
- Wenn die Startposition größer ist als die maximale Anzahl von Zeichen im Ausdruck, gibt die Funktion SUBSTRING() in SQL Server nichts zurück.
- Die Gesamtlänge kann die maximale Zeichenlänge der ursprünglichen Zeichenkette überschreiten. In diesem Fall ist die resultierende Teilzeichenkette die gesamte Zeichenkette, beginnend mit der Startposition im Ausdruck bis zum letzten Zeichen des Ausdrucks.
Das folgende Diagramm veranschaulicht die Verwendung der SUBSTRING()-Funktion in SQL Server:
Beispiele für T-SQL-Teilzeichenfolgen
Annahme: Angenommen, wir haben eine Tabelle mit dem Namen 'Guru99' mit zwei Spalten und vier Zeilen, wie unten dargestellt. Wir werden dieses 'GuruTabelle 99 in den folgenden Beispielen:
Abfrage 1: SUBSTRING() in SQL mit einer Länge, die kleiner ist als die maximale Gesamtlänge des Ausdrucks.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Ergebnis: Das folgende Diagramm zeigt die Teilzeichenkette der Spalte „Tutorial_name“ als Spalte „SUB“. Die Startposition ist 1 und die Länge 2, daher werden die ersten beiden Zeichen zurückgegeben:
Abfrage 2: SUBSTRING() in SQL Server mit einer Länge, die größer ist als die maximale Gesamtlänge des Ausdrucks.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Ergebnis: Das folgende Diagramm zeigt die Teilzeichenkette der Spalte „Tutorial_name“ als Spalte „SUB“. Obwohl die Länge der Teilzeichenkette größer ist als die maximale Gesamtlänge des Ausdrucks, wird kein Fehler ausgelöst, und die Abfrage gibt die vollständige Zeichenkette ab der Startposition zurück.
SUBSTRING mit CHARINDEX in SQL Server
Ein sehr häufiger Anwendungsfall von SUBSTRING() in der Praxis ist das Extrahieren von...tracText, der vor oder nach einem Trennzeichen steht, wie beispielsweise die Domain in einer E-Mail-Adresse. Die Funktion SUBSTRING() benötigt eine feste Startposition, die Position eines Trennzeichens variiert jedoch von Zeile zu Zeile. Die Funktion CHARINDEX() löst dieses Problem, indem sie die Position eines Zeichens innerhalb einer Zeichenkette zurückgibt.
CHARINDEX(substring_to_find, expression [, start_location])
Durch die Verschachtelung von CHARINDEX() innerhalb von SUBSTRING() wird die Startposition dynamisch. Das folgende Beispiel findet die @ Symbol und gibt alles danach zurück. A Variable enthält den Stichprobenwert:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Hier ermittelt CHARINDEX('@', @Email) die Position des @-Symbols, durch Addition von 1 wird es über dieses hinaus verschoben, und SUBSTRING() führt dann zu extracts die verbleibenden Zeichen. Für den obigen Wert gibt die Abfrage die Domäne zurück. guru99.comDieses CHARINDEX-plus-SUBSTRING-Muster ist die Standardmethode zum Parsen strukturierter Zeichenketten in T-SQL.
SUBSTRING vs. LEFT und RIGHT in SQL Server
SQL Server bietet außerdem die Funktionen LEFT() und RIGHT(), um Zeichen vom Anfang bzw. Ende einer Zeichenkette zu extrahieren. Sie sind kürzer, aber auf die beiden Enden beschränkt. SUBSTRING() ist am flexibelsten, da es an jeder beliebigen Position beginnen kann. Die folgende Tabelle vergleicht die Funktionen:
| Funktion | Argumente | Extracts von | Äquivalente SUBSTRING() |
| LINKS(Ausdruck, n) | 2 | Anfang der Zeichenfolge | SUBSTRING(Ausdruck, 1, n) |
| RECHTS(Ausdruck, n) | 2 | Ende der Zeichenfolge | SUBSTRING(Ausdruck, LEN(Ausdruck) – n + 1, n) |
| SUBSTRING(Ausdruck, Start, Länge) | 3 | Jede Position | Unzutreffend |
Kurz gesagt, sind LEFT() und RIGHT() praktische Kurzformen für die Enden einer Zeichenkette, während SUBSTRING() den allgemeinen Fall abdeckt, einschließlich Zeichen aus der Mitte.
Negative, Null- und NULL-Argumente in SUBSTRING
Neben den Grundregeln ist es hilfreich zu wissen, wie sich SUBSTRING() an den Rändern verhält. Wenn die Startposition null oder negativ ist, berechnet SQL Server eine effektive Länge von (Startposition + Länge – 1) und beginnt ab Position eins zu lesen. Wenn ein Argument NULL ist, ist auch das Ergebnis NULL. Die folgende Tabelle wurde mit der offiziellen Dokumentation abgeglichen. SUBSTRING (Transact-SQL) Die Referenz zeigt folgende Fälle:
| Telefon | Lösung | Grund |
| SUBSTRING('Guru99', 1, 4) | Guru | Normaler Aufruf: vier Zeichen ab Position eins. |
| SUBSTRING('Guru99', 0, 3) | Gu | Beginnen Sie unterhalb von eins: Die effektive Länge beträgt 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | Bei einer Länge über den String hinaus wird der Rest ohne Fehler zurückgegeben. |
| SUBSTRING('Guru99', 3, NULL) | NULL | Ein NULL-Argument führt dazu, dass das gesamte Ergebnis NULL ist. |
Die Kenntnis dieser Sonderfälle verhindert Überraschungen, wenn die Startposition aus einer anderen Spalte oder einem anderen Datensatz berechnet wird. Variable Das kann Null oder NULL sein.





