SQL: LIKE

O operador LIKE busca padrões de texto em uma coluna, de forma semelhante às expressões regulares disponíveis em linguagens de programação como o JavaScript e PHP.

O operador LIKE busca padrões de texto em uma coluna, de forma semelhante às expressões regulares disponíveis em linguagens de programação como o JavaScript e PHP.

Visão geral

A utilização de caracteres curinga é uma prática comum no ambiente de desenvolvimento, o que facilita bastante o filtro em determinados momentos. A utilização do like é muito vista na prática de autocomple de formulários HTML, onde um usuário inicia a digitação dos dados e logo a aplicação autocompleta.

Existem dois caracteres curingas que são utilizados em conjunto com o operador LIKE.

Para os exemplos a seguir, considere a estrutura de tabela abaixo, a tabela aluno (Tabela 1) que é responsável por armazenar as informações de todos os alunos da instituição.

id nome email id_turma
1 João da Silva joao@yahoo.com.br 1
3 Bruna dos Santos bruna@gmail.com 2
4 Pedro da Silva pedro@gmail.com 2
5 João Nascimento j.nascimento@outlook.com 1
Tabela 1. Tabela aluno

Sintaxe

SELECT [ coluna1, coluna2, ... | * ] FROM [ tabela1, tabela2, ... ] WHERE [ tabela1.coluna1 LIKE [ sequência de caracteres ] ]

Na prática

Exemplo 1

O operador porcentagem (%) representa zero, um ou mais caracteres em um texto. Por exemplo, considere que precisamos buscar todos os alunos com sobrenome “da silva” - abaixo vamos entender como fazer este tipo de consulta:

SELECT nome FROM aluno WHERE nome LIKE '%da Silva'

Na Tabela 2 podemos analisar o resultado da consulta usando o LIKE.

nome
João da Silva
Pedro da Silva
Tabela 2. Resultado da consulta de nomes de aluno cujo sobrenome contenha da Silva

Como podemos ver todos os nomes que combinavam com a expressão, ou seja, terminasse o texto com a palavra “da Silva” retornaram no resultado da consulta.

Exemplo 2

Podemos também utilizar o caractere porcentagem no final do texto da mesma forma que fizemos no início, permitindo realizar buscas em textos que sabemos parcialmente o início. No exemplo abaixo podemos ver como fazer este tipo de consulta:

SELECT nome FROM aluno WHERE nome LIKE 'João%'

Nesta consulta temos como resultado os nomes de alunos que seja iniciado por “João”, independentemente do que esteja escrito em seguida. O resultado pode ser visto na Tabela 3.

nome
João da Silva
João Nascimnento
Tabela 3. Resultado da consulta

Exemplo 3

Podemos também pesquisar por caracteres parciais ainda que estejam no meio do texto. Se analisarmos a Tabela 1 podemos perceber que alguns e-mails possuem o texto “gmail” no meio do conteúdo e para fazer este tipo de pesquisa podemos fazer como no exemplo abaixo:

SELECT email FROM aluno WHERE email LIKE '%gmail%'

Na Tabela 4 podemos ver o resultado da consulta utilizando o LIKE e o caractere porcentagem (%) no início e no final de um texto.

email
bruna@gmail.com
pedro@gmail.com
Tabela 4. Resultado da consulta

A consulta retornou os e-mails que possuíam a palavra “gmail”, independentemente da posição. É importante lembrar que este tipo de consulta é importante para encontrar conteúdos parciais em textos, como na situação exemplo anterior.

Exemplo 4

Diferentemente do caractere porcentagem (%), que busca independentemente da quantidade de caracteres, temos o sub traço (_) que considera apenas um caractere. Para pesquisar, por exemplo, todos os usuários da tabela aluno (Tabela 1) podemos utilizar a consulta abaixo:

SELECT nome FROM aluno WHERE nome LIKE '__ão%'

Apesar da consulta utilizar o caractere porcentagem (%) seu uso foi apenas para que a nossa consulta ficasse mais simples, mostrando que é possível combinar diferentes caracteres curingas na mesma consulta, como no resultado da Tabela 5.

email
João da Silva
João Nascimento
Tabela 5. Resultado da consulta

Da mesma forma que utilizamos a porcentagem em qualquer posição da sentença, é possível utilizar o sub traço inserindo-o em qualquer posição do texto. Lembre-se que ele equivale a apenas um caractere na busca.

Artigos relacionados