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.