Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como dividir uma string no MySQL

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.