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 origenVARCHAR
- delimiter
- Delimitador; distingue mayúsculas y minúsculasVARCHAR
- count
- Número de aparición del delimitador; si es negativo, se cuenta desde el final de la cadenaINT
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);Parte posterior al segundo punto desde el final
MySQL 8.4
SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);Dominio del correo electrónico
MySQL 8.4
SELECT email,
SUBSTRING_INDEX(email, '@', -1) AS domain
FROM Users
LIMIT 5;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.