Extração de Textos Baseado em Padrões com MySQL

Um problema muito comum ao realizarmos tratamento de dados é a necessidade de seprar em duas ou mais colunas trechos de um texto que está em uma coluna levando em consideração um delimitador específico.

Um exemplo seria um estrutura de dados onde temos a cidade e o estado separados por hífen em apenas uma coluna e queremos seprar estes valores em duas: uma apenas com o nome da cidade e outra com a sigla do estado.

FRUTAL-MG SÃO CARLOS-SP RECIFE-PE

Existem muitas formas de se fazer este tratamento de dados. Em SQL vai depender do SGBD que você está usando. Se for MySQL o SGBDs talvez seja mais fácil que em outros SGBDs.

Em MySQL existe uma função chamada SUBSTRING_INDEX. Ela recebe três parâmetros: a string, o delimitador e um índice. O índice pode ser um número inteiro positivo ou negativo. Se for positivo, a função retorna a parte da string antes do delimitador com o número de caracteres igual ao índice. Se o índice for negativo, a função retorna a parte da string após o delimitador com o número de caracteres igual ao índice.

O script abaixo faz a extração desejada:

SELECT SUBSTRING_INDEX("FRUTAL-MG", '-', 1) AS CIDADE, SUBSTRING_INDEX("FRUTAL-MG", '-', -1) AS ESTADO FROM DUAL;

Conhecer as funções específicas dos SGBDs ajuda a resolver problemas de maneira mais enxuta.

Ótima dica !