- 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 no MySQL é uma ferramenta essencial para extrair uma porção de uma string. Com essa função, você pode recuperar apenas a parte necessária de dados de um banco de dados. Por exemplo, é útil para extrair o domínio de um endereço de e-mail do 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 de destino da qual extrair.pos: A posição inicial (índice baseado em 1).len: O número de caracteres a extrair (opcional).
Se pos for positivo, conta a partir do início da string. Se for negativo, conta a partir do final. Se len for omitido, a função extrai da posição especificada até o final da string.
1.2 Casos de Uso da Função SUBSTRING
Essa função é usada para formatar dados de string ou extrair partes específicas, tornando a recuperação e o processamento de dados em bancos de dados mais eficientes.
2. Uso Básico da Função SUBSTRING
Vamos examinar um exemplo simples para entender como ela funciona.
2.1 Extrair uma 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, começa no 3º caractere, e com len definido como 6, extrai 6 caracteres.
2.2 Omitindo o Comprimento
Se você omitir len, ela extrairá da posição especificada até o final da string.
SELECT SUBSTRING('Hello, World!', 8);
O resultado é "World!", começando do 8º caractere até o final.
2.3 Posição Negativa
Usar um valor negativo permite especificar a posição a partir do final da string.
SELECT SUBSTRING('Hello, World!', -5);
Essa 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.
3.1 Extrair 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;
Essa consulta recupera a string após o símbolo “@”, fornecendo apenas a parte do domínio.
3.2 Extrair Parte de um Código de Produto
Aqui está um exemplo de extração de uma parte específica de um código de produto.
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
Essa consulta extrai 4 caracteres a partir do 5º caractere do código de produto e o exibe como uma nova coluna product_id.
3.3 Usando com Subconsultas
Combiná-la com subconsultas permite extrair dados sob condições complexas.
SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;
Essa consulta extrai os primeiros 10 caracteres da description de produtos onde category é ‘Electronics’.

4. Comparação com Outras Funções de String
Outras funções com 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 do início da string.RIGHT(str, len): Recupera o número especificado de caracteres do final da string.
SELECT LEFT('Hello, World!', 5); -- "Hello"
SELECT RIGHT('Hello, World!', 6); -- "World!"
Essas funções são úteis quando você deseja extrair uma porção de uma string de um final específico.
4.2 Função SUBSTR
SUBSTR é um alias para SUBSTRING e pode ser usado da mesma maneira.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
Essa consulta retorna "World!" assim como SUBSTRING.
5. Uso Avançado e Otimização da Função SUBSTRING
Aqui está como usar SUBSTRING de forma mais eficiente e otimizar seu desempenho.
5.1 Otimização de Desempenho
Usar SUBSTRING em grandes conjuntos de dados pode impactar o desempenho. Considere criar índices e verificar o plano de execução da consulta quando necessário. Se você extrair frequentemente a mesma substring, armazenar os resultados em cache também pode ajudar.
5.2 Uso na cláusula WHERE
Você pode usar SUBSTRING em uma cláusula WHERE para pesquisar com base em uma parte de uma string.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
Esta consulta recupera produtos cujo product_code começa com ‘ABC’.
6. Exemplos e Boas Práticas para a Função SUBSTRING
Aqui estão exemplos práticos e boas práticas para usar SUBSTRING.
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;
Esta consulta extrai o primeiro e o último nome de um nome completo separado por um espaço.
6.2 Boas Práticas
- Extração Mínima : Extraia apenas o que for necessário com
SUBSTRINGpara minimizar o impacto no desempenho. - Atenção ao Tipo de Dados : Ao aplicar
SUBSTRINGa dados numéricos, converta explicitamente para string primeiro. - Considerações de Índice : Usar
SUBSTRINGem uma cláusulaWHEREpode impedir o uso de índices, portanto verifique o desempenho da sua consulta.
7. Tratamento de Erros e Diferenças entre Versões
Vamos abordar o tratamento de erros e as diferenças no comportamento do SUBSTRING entre versões do MySQL.
7.1 Tratamento de Erros
Se a posição especificada em SUBSTRING estiver fora do intervalo da string, ele retornará uma string vazia. Como isso não é um erro, recomenda‑se adicionar lógica para verificar os resultados antecipadamente.
7.2 Diferenças de Versão
Dependendo da sua versão do MySQL, o comportamento do SUBSTRING pode variar. Por exemplo, algumas versões mais antigas tratam caracteres multibyte de forma diferente. Verifique a compatibilidade entre versões e aplique as medidas adequadas conforme necessário.


