En MariaDB, SUBSTRING_INDEX()
es una función de cadena incorporada. Devuelve una subcadena de una cadena antes de un cierto número de ocurrencias del delimitador especificado.
SUBSTRING_INDEX()
requiere en tres argumentos; la cadena, el delimitador y el conteo (es decir, el número de ocurrencias de ese delimitador).
Sintaxis
La sintaxis es así:
SUBSTRING_INDEX(str,delim,count)
Donde str
es la cadena, delim
es el delimitador y count
es el número de ocurrencias de ese delimitador que se usará para determinar la subcadena que se devolverá.
Si count
es positivo, se devuelve todo lo que se encuentra a la izquierda del delimitador final (contando desde la izquierda). Si count
es negativo, se devuelve todo lo que está a la derecha del delimitador final (contando desde la derecha).
Ejemplo
He aquí un ejemplo básico:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);
Resultado:
+-------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) | +-------------------------------------------------------+ | /users/homer | +-------------------------------------------------------+
Recuento negativo
Especificar un valor negativo para el recuento hace que se cuente hacia atrás desde el final de la cadena:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);
Resultado:
+--------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) | +--------------------------------------------------------+ | homer/docs/cat_vids | +--------------------------------------------------------+
Delimitador no encontrado
Si el delimitador no existe en la cadena, se devuelve la cadena completa:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3);
Resultado:
+-------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) | +-------------------------------------------------------+ | /users/homer/docs/cat_vids | +-------------------------------------------------------+
Argumentos nulos
Si alguno (o todos) de los argumentos son null
, el SUBSTRING_INDEX()
la función devuelve null
:
SELECT
SUBSTRING_INDEX(null, '/', 3) AS "1",
SUBSTRING_INDEX('/users/homer/docs/cat_vids', null, 3) AS "2",
SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', null) AS "3",
SUBSTRING_INDEX(null, null, null) AS "4";
Resultado:
+------+------+------+------+ | 1 | 2 | 3 | 4 | +------+------+------+------+ | NULL | NULL | NULL | NULL | +------+------+------+------+
Argumentos faltantes
Llamando a SUBSTRING_INDEX()
sin pasar ningún argumento da como resultado un error:
SELECT SUBSTRING_INDEX();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'