MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como SUBSTRING_INDEX() funciona no MariaDB


No MariaDB, SUBSTRING_INDEX() é uma função de string embutida. Ele retorna uma substring de uma string antes de um certo número de ocorrências do delimitador especificado.

SUBSTRING_INDEX() requer em três argumentos; a string, o delimitador e a contagem (ou seja, o número de ocorrências desse delimitador).

Sintaxe


A sintaxe fica assim:
SUBSTRING_INDEX(str,delim,count)

Onde str é a string, delim é o delimitador e count é o número de ocorrências desse delimitador a ser usado para determinar a substring a ser retornada.

Se count for positivo, tudo à esquerda do delimitador final (contando a partir da esquerda) é retornado. Se count for negativo, tudo à direita do delimitador final (contando a partir da direita) é retornado.

Exemplo


Segue um exemplo básico:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);

Resultado:
+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) |
+-------------------------------------------------------+
| /users/homer                                          |
+-------------------------------------------------------+

Contagem negativa


Especificar um valor negativo para a contagem faz com que ela seja contada para trás a partir do final da string:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);

Resultado:
+--------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) |
+--------------------------------------------------------+
| homer/docs/cat_vids                                    |
+--------------------------------------------------------+

Delimitador não encontrado


Se o delimitador não existir na string, a string inteira é retornada:
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


Se algum (ou todos) dos argumentos for null , o SUBSTRING_INDEX() função retorna 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 ausentes


Chamando SUBSTRING_INDEX() sem passar nenhum argumento resulta em um erro:
SELECT SUBSTRING_INDEX();

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'