Problema:
Você gostaria de dividir uma string no MySQL.
Exemplo:
Nosso banco de dados tem uma tabela chamada
Student
com dados nas colunas id
e name
. id | nome |
---|---|
1 | Ann Smith |
2 | Mark Twain |
3 | Brad Green |
Vamos buscar os dados do nome da coluna e dividi-los em
firstname
e lastname
. Solução:
Usaremos o
SUBSTRING_INDEX()
função. Segue a consulta:SELECT SUBSTRING_INDEX(name,' ',1) AS firstname, SUBSTRING_INDEX(name,' ',-1) AS lastname FROM Student
Segue o resultado da consulta:
nome | sobrenome |
---|---|
Ann | Smith |
Marcar | Twain |
Brad | Verde |
Discussão:
A função
SUBSTRING_INDEX()
recebe 3 argumentos:a string de origem, o delimitador e a contagem de ocorrências do delimitador. A string de origem é a string que gostaríamos de dividir.
O delimitador é uma string de caracteres que o
SUBSTRING_INDEX()
função procura na string de origem. Quando encontrado, indica o local onde a substring termina. O delimitador pode ser um único caractere, como um espaço, mas também pode ser um padrão que consiste em dois ou mais caracteres. Esse padrão diferencia maiúsculas de minúsculas; ou seja, importa se os caracteres fornecidos são maiúsculos ou minúsculos. Lembre-se que o delimitador é uma string, portanto deve ser escrito entre aspas (''). O último argumento é a contagem de ocorrências . Indica o número de vezes que o padrão delimitador precisa ser correspondido. Observe que a contagem de ocorrências pode ser um valor negativo. Quando for negativo, contamos as ocorrências do delimitador a partir da direita. Quando a contagem é um número positivo, contamos da esquerda.
A função gera todos os caracteres da string de origem até que o delimitador corresponda ao número de vezes fornecido pela contagem de ocorrências.
Se executarmos a seguinte consulta:
SELECT SUBSTRING_INDEX('Ann Smith',' ',1);
a saída será:
Ann
Como você pode ver, a função retornou todos os caracteres até que o primeiro espaço da esquerda fosse encontrado.
Em nosso exemplo, recuperamos como nome do aluno todos os caracteres até o primeiro espaço da esquerda e como sobrenome do aluno todos os caracteres até o primeiro espaço da direita.