SQL Academy
Premium
Funktionsreferenz

SUBSTRING_INDEX

Entsprechung in PostgreSQL:

Gibt den Teil eines Strings vor dem angegebenen Vorkommen eines Trennzeichens zurück.

MySQL 8.1
SUBSTRING_INDEX(str, delimiter, count)

Parameter

strVARCHAR
Ausgangsstring
delimiterVARCHAR
Trennzeichen, Groß- und Kleinschreibung wird beachtet
countINT
Nummer des Vorkommens des Trennzeichens, eine negative zählt vom Ende des Strings

Rückgabewert

Teil des Strings links vom count-ten Trennzeichen, bei negativem count rechts vom count-ten Trennzeichen von hinten; der ganze String, wenn es weniger Trennzeichen gibt; leerer String, wenn count 0 ist

Beispiele

Teil vor dem zweiten Punkt

MySQL 8.1
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
SUBSTRING_INDEX('www.mysql.com', '.', 2)
www.mysql

Teil nach dem zweiten Punkt von hinten

MySQL 8.1
SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
SUBSTRING_INDEX('www.mysql.com', '.', -2)
mysql.com

Domain aus der E-Mail

MySQL 8.1
SELECT email,
	SUBSTRING_INDEX(email, '@', -1) AS domain
FROM Users
LIMIT 5;
emaildomain
barjam@hotmail.comhotmail.com
tellis@me.comme.com
metzzo@superhotmail.comsuperhotmail.com
ralamosm@verizon.netverizon.net
barjam@hotmail.comhotmail.com

Details

Um einen Teil des Strings nach seiner Nummer zu nehmen, wie mit SPLIT_PART in PostgreSQL, verschachtele zwei Aufrufe: Schneide zuerst alles nach dem n-ten Trennzeichen ab und nimm dann den letzten Teil. SUBSTRING_INDEX(SUBSTRING_INDEX('www.mysql.com', '.', 2), '.', -1) gibt mysql zurück.

Siehe auch