sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona SUBSTRING_INDEX() en MariaDB

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'