- 1 1. O que é a função SUBSTRING?
- 2 2. Uso Básico da função SUBSTRING
- 3 3. Aplicações Práticas da função SUBSTRING
- 4 4. Comparação com outras funções de string
- 5 5. Uso Avançado e Otimização da Função SUBSTRING
- 6 6. Exemplos e Boas Práticas para a Função SUBSTRING
- 7 7. Tratamento de Erros e Diferenças entre Versões
1. O que é a função SUBSTRING?
A função SUBSTRING é uma importante função do MySQL usada para extrair uma substring de uma string. Com essa função, você pode obter apenas a parte que precisa dos dados armazenados em um banco de dados. Por exemplo, ela é útil quando você quer extrair a parte do domínio do endereço de e‑mail de um usuário, ou recuperar uma seção específica de um código de produto.
1.1 Sintaxe Básica
A sintaxe básica da função SUBSTRING é a seguinte:
SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
str: A string da qual extrair.pos: A posição inicial (começa em 1).len: O número de caracteres a extrair (opcional).
Se pos for um valor positivo, o MySQL conta para frente a partir do início da string. Se for negativo, o MySQL conta para trás a partir do final da string. Se len for omitido, o MySQL extrai da posição especificada até o final da string.
1.2 Casos de Uso da função SUBSTRING
Esta função é usada para formatar dados de texto e extrair partes específicas, facilitando a busca e o processamento de informações de forma eficiente em um banco de dados.
2. Uso Básico da função SUBSTRING
Para entender o básico, vamos ver alguns exemplos simples.
2.1 Extraindo parte de uma string
A consulta a seguir extrai 6 caracteres a partir do 3.º caractere da string “Hello, World!”.
SELECT SUBSTRING('Hello, World!', 3, 6);
O resultado é "llo, W". Como pos é 3, a extração começa no 3.º caractere, e como len é 6, são extraídos 6 caracteres.
2.2 Omitindo o parâmetro de comprimento
Se você omitir len, o MySQL extrai da posição especificada até o final da string.
SELECT SUBSTRING('Hello, World!', 8);
O resultado é "World!", que recupera tudo a partir do 8.º caractere até o final.
2.3 Usando uma posição negativa
Se você usar um valor negativo, pode especificar a posição a partir do final da string.
SELECT SUBSTRING('Hello, World!', -5);
Esta consulta retorna "orld!", extraindo os últimos 5 caracteres.
3. Aplicações Práticas da função SUBSTRING
A função SUBSTRING é frequentemente usada em operações de dados do mundo real. Aqui estão alguns exemplos práticos.
3.1 Extraindo o domínio de um endereço de e‑mail
Combinando SUBSTRING com LOCATE, você pode extrair a parte do domínio de um endereço de e‑mail.
SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;
Esta consulta extrai a string após “@” e devolve apenas a parte do domínio.
3.2 Extraindo parte de um código de produto
Este exemplo extrai uma seção específica de um código de produto.
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
Nesta consulta, 4 caracteres a partir do 5.º caractere do código do produto são extraídos e exibidos como uma nova coluna chamada product_id.
3.3 Usando em uma subconsulta
Combinando-a com uma subconsulta, você pode extrair dados sob condições mais complexas.
SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;
Esta consulta extrai os primeiros 10 caracteres de description dos produtos onde category é ‘Electronics’. 
4. Comparação com outras funções de string
Outras funções que podem ser usadas para propósitos semelhantes ao SUBSTRING incluem LEFT, RIGHT e SUBSTR.
4.1 Funções LEFT e RIGHT
LEFT(str, len): Recupera o número especificado de caracteres a partir do início da string.RIGHT(str, len): Recupera o número especificado de caracteres a partir do final da string.SELECT LEFT('Hello, World!', 5); -- "Hello" SELECT RIGHT('Hello, World!', 6); -- "World!"
Essas funções são convenientes quando você deseja extrair uma substring do início ou do final de uma string.
4.2 Função SUBSTR
SUBSTR é um alias para SUBSTRING, portanto pode ser usado da mesma forma.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
Esta consulta retorna "World!", assim como SUBSTRING.
5. Uso Avançado e Otimização da Função SUBSTRING
Esta seção explica usos mais avançados e técnicas de otimização.
5.1 Otimização de Desempenho
Usar SUBSTRING em grandes conjuntos de dados pode afetar o desempenho. Se necessário, crie índices e verifique o plano de execução da consulta. Além disso, se você extrair frequentemente o mesmo trecho, considere armazenar o resultado em cache.
5.2 Usando em uma cláusula WHERE
Você pode usar SUBSTRING em uma cláusula WHERE para filtrar registros com base em uma condição de substring.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
Esta consulta procura produtos onde os primeiros 3 caracteres de product_code são ‘ABC’.
6. Exemplos e Boas Práticas para a Função SUBSTRING
Aqui estão exemplos práticos de uso do SUBSTRING e boas práticas para o trabalho real.
6.1 Código de Exemplo
O exemplo a seguir divide o nome completo de um cliente em nome e sobrenome.
SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;
Nesta consulta, o nome e o sobrenome são extraídos de um nome completo separado por um espaço.
6.2 Boas Práticas
- Extraia apenas o que você precisa: Mantenha o comprimento da substring o menor possível para reduzir o impacto no desempenho.
- Preste atenção aos tipos de dados: Se você aplicar
SUBSTRINGa dados numéricos, pode ser necessário convertê‑los explicitamente para string. - Considere o uso de índices: Ao usar
SUBSTRINGem uma cláusulaWHERE, os índices podem não ser utilizados de forma eficaz, portanto monitore cuidadosamente o desempenho da consulta.
7. Tratamento de Erros e Diferenças entre Versões
Esta seção aborda o tratamento de erros ao usar SUBSTRING e as diferenças entre versões do MySQL.
7.1 Tratamento de Erros
Se a posição especificada estiver fora do intervalo da string, SUBSTRING retorna uma string vazia. Como isso não é um erro, recomenda‑se adicionar lógica para validar o resultado antecipadamente, se necessário.
7.2 Diferenças entre Versões
Dependendo da versão do MySQL, o comportamento da função SUBSTRING pode variar. Por exemplo, algumas versões mais antigas podem tratar caracteres multibyte de forma diferente. Verifique a compatibilidade entre versões e aplique as medidas adequadas quando necessário.


