Referencia de funciones

SUBSTRING_INDEX

Equivalente en PostgreSQL:

Devuelve la parte de una cadena anterior a la aparición indicada de un delimitador.

MySQL 8.4
SUBSTRING_INDEX(str, delimiter, count)
str
Cadena de origen
VARCHAR
delimiter
Delimitador; distingue mayúsculas y minúsculas
VARCHAR
count
Número de aparición del delimitador; si es negativo, se cuenta desde el final de la cadena
INT

Valor devuelto

Parte de la cadena a la izquierda del delimitador número count; con count negativo, a la derecha del delimitador número count contando desde el final; toda la cadena si hay menos delimitadores; cadena vacía si count es 0

Ejemplos

Parte anterior al segundo punto

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

Parte posterior al segundo punto desde el final

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

Dominio del correo electrónico

MySQL 8.4
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

Detalles

Para obtener una parte de la cadena por su número, como con SPLIT_PART en PostgreSQL, anida dos llamadas: primero corta todo lo que hay después del n-ésimo delimitador y luego toma la última parte. SUBSTRING_INDEX(SUBSTRING_INDEX('www.mysql.com', '.', 2), '.', -1) devuelve mysql.

Véase también