Técnicas SQL para Pesquisas de Correspondência Parcial Usando o Operador LIKE

O operador SQL LIKE é uma ferramenta poderosa usada para buscas flexíveis de strings dentro de um banco de dados. Este operador permite buscas de correspondência parcial, facilitando a localização de registros que correspondem a um padrão específico. Este artigo detalha o uso básico do operador LIKE, fornece exemplos específicos usando consultas SQL reais e explora técnicas de pesquisa avançadas.

Índice

Sintaxe Básica do Operador LIKE

O operador LIKE é usado em consultas SQL para buscar correspondências parciais dentro de strings. A sintaxe básica é a seguinte:

SELECT column_name FROM table_name WHERE column_name LIKE 'pattern';

Os padrões usam curingas para especificar condições de correspondência parcial. Os principais curingas são os seguintes:

Tipos de Curingas

%

Corresponde a qualquer sequência de caracteres. Por exemplo, ‘A%’ corresponde a qualquer string que comece com ‘A’.

_

Corresponde a qualquer caractere único. Por exemplo, ‘A_’ corresponde a qualquer string que comece com ‘A’ e seja seguida por qualquer caractere único.

Exemplos de Pesquisas de Correspondência Parcial

Aqui estão exemplos específicos de pesquisas de correspondência parcial usando o operador LIKE. O exemplo a seguir busca todos os registros onde o nome do funcionário contém “Smith”.

Exemplo Básico de Pesquisa de Correspondência Parcial

SELECT * FROM Employees WHERE Name LIKE '%Smith%';

Esta consulta busca todos os registros onde o nome do funcionário contém “Smith”. O curinga % indica que qualquer sequência de caracteres pode preceder ou seguir “Smith”.

Exemplo Avançado de Pesquisa de Correspondência Parcial

Por exemplo, para buscar produtos contendo “Pro” no nome do produto, a consulta seria:

SELECT * FROM Products WHERE ProductName LIKE '%Pro%';

Esta consulta busca todos os produtos que contêm “Pro” no nome do produto.

Estudo de Caso de Pesquisa de Correspondência Parcial

Para buscar clientes cujos endereços de email contêm “gmail.com”:

SELECT * FROM Customers WHERE Email LIKE '%gmail.com';

Esta consulta busca todos os clientes cujos endereços de email contêm “gmail.com”.

Pesquisas de Correspondência para Frente

Pesquisas de correspondência para frente são usadas para encontrar registros onde uma string começa com uma substring específica. Isso é alcançado usando o operador LIKE com o curinga %. Abaixo está um exemplo específico.

Exemplo Básico de Pesquisa de Correspondência para Frente

Por exemplo, para buscar funcionários cujos nomes começam com “John”:

SELECT * FROM Employees WHERE Name LIKE 'John%';

Esta consulta retorna todos os registros onde a coluna Name começa com “John”. O curinga % indica que qualquer sequência de caracteres pode seguir “John”.

Exemplo Avançado de Pesquisa de Correspondência para Frente

Para buscar produtos com códigos de produto começando com “A”:

SELECT * FROM Products WHERE ProductCode LIKE 'A%';

Esta consulta busca todos os produtos com códigos de produto começando com “A”.

Estudo de Caso de Pesquisa de Correspondência para Frente

Para buscar clientes cujos endereços de email começam com “info”:

SELECT * FROM Customers WHERE Email LIKE 'info%';

Esta consulta busca todos os clientes cujos endereços de email começam com “info”.

Pesquisas de Correspondência para Trás

Pesquisas de correspondência para trás são usadas para encontrar registros onde uma string termina com uma substring específica. Isso é alcançado usando o operador LIKE com o curinga %. Abaixo está um exemplo específico.

Exemplo Básico de Pesquisa de Correspondência para Trás

Por exemplo, para buscar funcionários cujos nomes terminam com “son”:

SELECT * FROM Employees WHERE Name LIKE '%son';

Esta consulta retorna todos os registros onde a coluna Name termina com “son”. O curinga % indica que qualquer sequência de caracteres pode preceder “son”.

Exemplo Avançado de Pesquisa de Correspondência para Trás

Para buscar produtos cujos nomes terminam com “Lite”:

SELECT * FROM Products WHERE ProductName LIKE '%Lite';

Esta consulta busca todos os produtos cujos nomes terminam com “Lite”.

Estudo de Caso de Pesquisa de Correspondência para Trás

Para buscar clientes cujos endereços de email terminam com “@example.com”:

SELECT * FROM Customers WHERE Email LIKE '%@example.com';

Esta consulta busca todos os clientes cujos endereços de email terminam com “@example.com”.

Correspondência em Qualquer Posição

Correspondência em qualquer posição busca registros onde uma substring específica aparece em qualquer lugar dentro da string. Isso é alcançado combinando o operador LIKE com o curinga %.

Exemplo Básico de Correspondência em Qualquer Posição

Por exemplo, para buscar funcionários cujos nomes contêm “art”:

SELECT * FROM Employees WHERE Name LIKE '%art%';

Esta consulta retorna todos os registros onde a coluna Name contém “art”. Os curingas % indicam que qualquer sequência de caracteres pode preceder ou seguir “art”.

Exemplo Avançado de Correspondência em Qualquer Posição

Por exemplo, para buscar produtos cujas descrições contêm “eco”:

SELECT * FROM Products WHERE Description LIKE '%eco%';

Esta consulta busca todos os produtos cujas descrições contêm “eco”.

Estudo de Caso de Correspondência em Qualquer Posição

Para buscar clientes cujos endereços contêm “Street”:

SELECT * FROM Customers WHERE Address LIKE '%Street%';

Esta consulta busca todos os clientes cujos endereços contêm “Street”.

O Operador LIKE e Caracteres de Escape

Ao usar o operador LIKE, se caracteres curingas (% ou _) fizerem parte da string real, caracteres de escape devem ser usados para buscá-los. Isso permite tratar caracteres específicos como alvos de pesquisa.

Sintaxe Básica para Caracteres de Escape

No SQL, a palavra-chave ESCAPE é usada para especificar um caractere de escape. A sintaxe básica é a seguinte:

SELECT column_name FROM table_name WHERE column_name LIKE 'pattern' ESCAPE 'escape_character';

Exemplo de Uso de Caracteres de Escape

Por exemplo, para buscar registros contendo “50%”:

SELECT * FROM Products WHERE ProductCode LIKE '%50!%%' ESCAPE '!';

Esta consulta busca a string “50%”. Aqui, ! é especificado como o caractere de escape, então !% significa o caractere % real.

Exemplo Avançado de Uso de Caracteres de Escape

Para buscar nomes de clientes contendo “_Smith”:

SELECT * FROM Customers WHERE Name LIKE '%!_Smith%' ESCAPE '!';

Esta consulta busca a string “_Smith”. Aqui, ! é especificado como o caractere de escape, então !_ significa o caractere _ real.

Estudo de Caso de Uso de Caracteres de Escape

Para buscar registros contendo “50% off” em comentários:

SELECT * FROM Comments WHERE CommentText LIKE '%50!% off%' ESCAPE '!';

Esta consulta busca a string “50% off”. Especificando ! como o caractere de escape, % é tratado como parte da string.

Considerações de Desempenho

Embora usar o operador LIKE seja conveniente, pode impactar o desempenho em grandes bancos de dados. Aqui, discutimos como otimizar o desempenho ao usar o operador LIKE.

Usando Índices

Tipicamente, buscas envolvendo o operador LIKE não podem usar índices de forma eficiente. No entanto, buscas de correspondência para frente (por exemplo, LIKE 'pattern%') podem utilizar índices. Por exemplo, buscar registros onde os nomes começam com “John” pode melhorar o desempenho se um índice apropriado for configurado.

CREATE INDEX idx_name ON Employees (Name);

Otimização de Pesquisas de Correspondência Parcial e para Trás

Pesquisas de correspondência parcial (LIKE '%pattern%') e de correspondência para trás (LIKE '%pattern') não podem usar índices, levando a um desempenho inferior. Nesses casos, considere usar um mecanismo de busca de texto completo (por exemplo, Elasticsearch) ou o recurso de busca de texto completo do SQL (por exemplo, índices FULLTEXT no MySQL).

CREATE FULLTEXT INDEX idx_description ON Products (Description);

Usando Caches

Usar caches para consultas frequentemente executadas pode reduzir a carga do banco de dados e melhorar o desempenho. Implemente caching no nível da aplicação ou utilize os recursos de caching do seu sistema de banco de dados.

Exemplo de Ajuste de Desempenho

Por exemplo, em uma tabela com uma grande quantidade de dados de clientes, usar um índice de busca de texto completo pode melhorar a velocidade de busca para pesquisas de correspondência parcial.

ALTER TABLE Customers ADD FULLTEXT(Email);
SELECT * FROM Customers WHERE MATCH(Email) AGAINST ('%gmail.com%');

Conclusão

O operador SQL LIKE é uma ferramenta poderosa para recuperar dados de forma eficiente que contêm padrões específicos de um banco de dados. Este artigo explicou a sintaxe básica do operador LIKE, forneceu exemplos específicos de buscas de correspondência parcial, para frente, para trás e em qualquer posição, e cobriu técnicas de busca avançadas usando caracteres de escape. Também discutiu considerações de desempenho ao usar o operador LIKE.

O uso eficaz do operador LIKE pode aumentar a flexibilidade das buscas em bancos de dados. No entanto, em grandes bancos de dados, otimizar o desempenho através do uso adequado de índices, mecanismos de busca de texto completo e caching é crucial. Combinar essas técnicas permitirá buscas mais eficientes em bancos de dados.

Índice