Problem:
Sie haben eine Spalte mit Zeichenfolgen und möchten Teilzeichenfolgen daraus erhalten.
Beispiel 1:
In den emails
Tabelle gibt es eine E-Mail-Spalte. Sie möchten die ersten sieben Zeichen jeder E-Mail anzeigen.
Die Tabelle sieht folgendermaßen aus:
[email protected] |
[email protected] |
[email protected] |
[email protected] |
Lösung 1:
SELECT email, SUBSTRING(email, 1, 7) AS substring FROM emails;
Das Ergebnis ist:
Teilstring | |
---|---|
[email protected] | jake99@ |
[email protected] | Tamarab |
[email protected] | notine@ |
[email protected] | Jessica |
Diskussion:
Verwenden Sie den SUBSTRING()
Funktion. Das erste Argument ist die Zeichenfolge oder der Spaltenname. Das zweite Argument ist der Index des Zeichens, bei dem der Teilstring beginnen soll. Das dritte Argument ist die Länge des Teilstrings.
Achtung! Anders als in einigen anderen Programmiersprachen beginnen die Indizes bei 1 , nicht 0. Das bedeutet, dass das erste Zeichen den Index 1 hat, das zweite Zeichen den Index 2 usw.
SUBSTRING(email, 1, 7)
gibt die Teilstrings der Werte in email
zurück Spalte, die beim ersten Zeichen beginnen und sieben Zeichen lang sind.
Beispiel 2:
Sie möchten den Teilstring zwischen den Indizes 2 und 6 (einschließlich) anzeigen.
Lösung 2:
SELECT email, SUBSTRING(email, 2, 5) AS substring FROM emails;
Das Ergebnis ist:
Teilstring | |
---|---|
[email protected] | ake99 |
[email protected] | Amara |
[email protected] | meine |
[email protected] | wesentlich |
Diskussion:
Sie verwenden den SUBSTRING()
funktionieren genauso wie in den vorherigen Beispielen. Dieses Mal ist das zweite Argument der Funktion 2
, da wir bei Index 2 beginnen wollen. Die Länge des Teilstrings ist 5 (end_index - start_index + 1
).
Beispiel 3:
Sie möchten den Teilstring anzeigen, der mit @
beginnt Zeichen und endet am Ende der Zeichenfolge, aber Sie kennen die genauen Indizes oder Längen nicht.
Lösung 3:
SELECT email, SUBSTRING(email, CHARINDEX('@', email), LEN(email) - CHARINDEX('@', email) + 1) AS substring FROM emails;
Das Ergebnis ist:
Teilstring | |
---|---|
[email protected] | @googlemail.com |
[email protected] | @zoho.com |
[email protected] | @yahoo.fr |
[email protected] | @onet.pl |
Diskussion:
Sie verwenden den SUBSTRING()
funktionieren genauso wie in den vorherigen Beispielen. Dieses Mal suchen Sie nach einem bestimmten Zeichen, dessen Position von Zeile zu Zeile variieren kann. Um den Index des bestimmten Zeichens zu finden, können Sie den CHARINDEX(character, column)
verwenden Funktion, wobei Zeichen das spezifische Zeichen ist, an dem Sie die Teilzeichenfolge beginnen möchten (hier @
). Die Argumentspalte ist die Spalte, aus der Sie die Teilzeichenfolge abrufen möchten; es kann auch ein Literal-String sein.
Das dritte Argument von SUBSTRING()
Funktion ist die Länge der Teilzeichenfolge. Sie können es mit CHARINDEX()
berechnen und die LEN()
Funktionen. Dazu subtrahieren Sie den Index von der Spaltenlänge und addieren dann 1:
LEN(email) - CHARINDEX('@', email) + 1
Möglicherweise möchten Sie auch einen Teilstring abrufen, der nicht am Ende des Strings endet, sondern an einem bestimmten Zeichen, z. B. vor '.
'. So können Sie dies tun:
SELECT email, SUBSTRING(email, CHARINDEX('@', email), CHARINDEX('.', email) - CHARINDEX('@', email)) AS substring FROM emails;
Das Ergebnis dieser Abfrage ist:
Teilstring | |
---|---|
[email protected] | @googlemail |
[email protected] | @zoho |
[email protected] | @yahoo |
[email protected] | @onet |
Der Teil CHARINDEX('.', email) - CHARINDEX('@', email)
berechnet einfach die Länge des Teilstrings.