SQL LIKE: pesquisando valores similares em uma coluna!

O comando SQL LIKE é um importante recurso da linguagem SQL para auxiliar na seleção de dados específicos em uma tabela. Sua utilização é bastante útil quando queremos encontrar uma correspondência exata de um determinado termo, como palavras iniciadas ou terminadas com uma letra específica.

Apesar de muito útil, é preciso atenção ao utilizar esse recurso, pois se o comando SQL for muito complexo, pode impactar na performance da aplicação. Entretanto, existem algumas boas práticas que ajudam a pessoa programadora a extrair o máximo desse recurso, sem causar impactos negativos na aplicação.

Para demonstrar como esse recurso da linguagem SQL funciona, preparamos este conteúdo com os seguintes tópicos:

  • O que é o SQL LIKE?
  • Qual a sintaxe do SQL LIKE?
  • 6 exemplos de uso do comando SQL LIKE
  • Boas práticas ao usar o comando SQL LIKE

Continue conosco e boa leitura!

O que é o SQL LIKE?

O comando SQL LIKE é utilizado em conjunto com a cláusula WHERE e serve para realizar uma busca mais refinada em um campo de uma tabela. Para isso, ele utiliza caracteres curingas associados ao termo que será pesquisado, o que ajuda a tornar a busca mais refinada e precisa. São eles:

  • sinal de porcentagem “%”: utilizado para indicar zero, um ou múltiplos caracteres antes o depois do termo pesquisado;
  • caractere de sublinhado “_” : usado para representar um único caractere antes ou após o termo procurado.
  • palavra-chave ESCAPE: utilizada para que seja possível incluir os caracteres curingas (% e _ ) ao realizar uma busca.

É importante dizer que o uso da cláusula WHERE é obrigatória ao utilizarmos o LIKE. Caso contrário, teremos um erro de sintaxe como retorno do comando SQL. Além disso, o comando SQL LIKE é padrão da linguagem SQL. Isso significa que sua sintaxe é a mesma em diferentes modelos de banco de dados relacional, como no MySQL, Sql Server, Oracle, MS Access e muitos outros.

Qual a sintaxe do SQL LIKE?

A sintaxe do SQL LIKE é:

SELECT coluna1, coluna2, ... colunaN
  FROM nome_tabela
WHERE nome_coluna LIKE modelo;

Em que:

  • coluna1, coluna2, colunaN: correspondem ao nome da coluna selecionada pelo comando SELECT;
  • nome_tabela: representa o nome de tabela em que a busca será realizada;
  • nome_coluna: indica o nome da coluna em que a comparação do comando LIKE será realizada;
  • modelo: representa o valor a ser pesquisado em cada conteúdo da coluna selecionada.

O comando LIKE retorna um valor booleano, ou seja, verdadeiro ou falso caso a expressão procurada seja ou não encontrada.

6 exemplos de uso do comando SQL LIKE

Nada melhor que visualizar os resultados obtidos ao utilizarmos o comando SQL LIKE. Para isso, vamos criar uma pequena base de dados no MySQL. Dessa forma, será possível executar os comandos e conferir o resultado. Confira o script para a criação do banco de dados e a inserção de alguns registros que servirão de apoio para os exemplos que faremos a seguir.

Exemplo de uso código SQL

1. Buscar registros que comecem com uma determinada letra

Vamos utilizar o comando SQL LIKE para recuperar todas as pessoas da tabela alunos cujo nome comece com a letra “J”. Nesse cenário, devemos utilizar o sinal de porcentagem após o caractere que vamos pesquisar para compor o termo da busca. Veja como fica o comando:

SELECT nome FROM alunos WHERE nome LIKE 'J%'

Resultado:
João Paulo 
Joana 
Joaquim 
josé paulo 
João Luiz
José Pedro

Perceba que, propositalmente, adicionamos o nome “josé paulo” com as letras iniciais em minúscula. O objetivo era verificar se o comando faria a distinção entre maiúsculas e minúsculas. No nosso exemplo, o comando LIKE é case-insensitive, ou seja, não faz a distinção entre os dois tipos de caracteres.

Entretanto, é importante observar qual é o Charset (símbolos) e o Collation (regras de comparação de caracteres) utilizados ao criar o banco de dados, pois existem outras alternativas que fariam com que o retorno do nosso comando excluísse o registro com a inicial de letra minúscula.

2. Recuperar registros terminados com determinado caractere

Agora, vamos realizar a busca na base de dados para selecionar os nomes de alunos que terminem com a letra “o”. Para isso, utilizamos o caractere de percentual logo no início da expressão. Isso significa que apenas a última letra do campo será considerada. Veja como fica o comando SQL:

SELECT nome FROM alunos WHERE nome LIKE '%o'

Resultado:
João Paulo 
josé paulo 
José Pedro

Perceba que o resultado da seleção corresponde ao último caractere do campo e não do primeiro nome da pessoa. Por isso, se você olhar na nossa massa de dados, verá que temos o nome de “João Luiz” que não está listado no retorno desse comando.

Isso aconteceu porque, nesse caso, a última letra desse nome corresponde ao “z” (de Luiz) e não ao “o”, que é o caractere utilizado na expressão do nosso comando. Portanto, é preciso atenção ao construir as expressões para garantir o retorno desejado.

3. Procurar por um termo em qualquer posição do campo

Também é possível realizar a busca por um determinado termo em qualquer posição do campo. Para isso, devemos utilizar o caractere de percentual, conforme o exemplo a seguir:

SELECT nome FROM alunos WHERE nome LIKE '%oa%'

Resultado:
João Paulo 
Joana 
Joaquim
João Luiz 

No comando acima, selecionamos todos os registros do campo nome que tenham os caracteres “oa” em qualquer posição. Perceba que o nome “João Paulo” e “João Luiz” estão listados no nosso retorno, apesar de a letra “a” ter o acento til. Isso acontece pela mesma razão que mencionamos acima, ou seja, faz parte das regras do tipo de collation utilizada pelo banco de dados.

Portanto, se o banco de dados estiver configurado com uma collation diferente, esses registros não seriam selecionados por esse comando SQL.

4. Pesquisar a segunda letra de um determinado campo

Imagine que precisamos recuperar todos os alunos que tenham a letra “o” no segundo caractere do nome. Para isso, utilizaremos os dois caracteres curingas para compor a expressão de busca. Veja o código SQL a seguir.

SELECT nome FROM alunos WHERE nome LIKE '_o%'

Resultado:
João Paulo 
Joana
Joaquim
josé Paulo
João Luiz
José Pedro

Perceba que, para escrevermos a expressão, utilizamos primeiro o caractere de sublinhado seguido da letra “o”. Nesse comando, dizemos para o banco de dados que a primeira letra pode ser qualquer uma, a segunda deve ser a letra “o”, seguida de qualquer quantidade de caracteres.

Se não colocássemos o caractere de percentual no final da expressão, ela não retornaria nenhum valor.

5. Pesquisar palavras com três caracteres entre outras letras

O caractere curinga sublinhado “_” pode ser utilizado mais que uma vez. Dessa forma, é possível determinar características mais específicas em relação à busca. Veja um código de exemplo:

SELECT nome FROM alunos where nome like '%p___o%'

Resultado:
João Paulo
josé Paulo
Paulo Henrique
José Pedro

No comando acima, utilizamos os dois caracteres curingas para compor a expressão. Perceba que usamos primeiro o percentual para indicar que pode haver caracteres antes da letra “p”. A seguir, usamos três vezes o caractere de sublinhado seguido da letra “o”. Isso significa que entre a letra “p” e a letra “o” deve ter obrigatoriamente três caracteres entre elas.

Por fim, utilizamos novamente o caractere de percentual para indicar que pode haver mais caracteres após a letra “o”.

6. Pesquisar por palavras que começam e terminam com determinado caractere

Podemos indicar qual a letra inicial e final ao realizarmos uma seleção. No exemplo abaixo, selecionamos todas as pessoas em que a cidade comece com “b” e termine com “e”. Veja como fica o comando:

SELECT nome, cidade FROM alunos WHERE cidade LIKE 'b%e'

Resultado:
Joaquim / Belo Horizonte 
Neide / Belo Horizonte
José Pedro / Belo Horizonte

Boas práticas ao usar o comando SQL LIKE

Existem tipos de dados, como o char, que preenchem o restante do campo com espaços em branco. Já o tipo varchar não tem essa característica. Assim, ao realizarmos uma busca em que o critério de seleção é feito com tipos de dados diferentes, o resultado pode não corresponder ao esperado em função dos caracteres em branco inseridos automaticamente no campo do tipo char.

Portanto, é preciso ter cuidado ao utilizar esse recursopara evitar surpresas indesejadas ao executar as buscas.

Como mencionamos, o comando LIKE utiliza caracteres curingas para realizar a busca dos dados na tabela. Dependendo de como eles forem utilizados, podem necessitar da leitura completa dos dados do campo, pois é mais rápido buscar palavras que começam com determinada letra, que palavras que contenham um grupo de caracteres no meio, como demonstramos no exemplo número seis.

Dessa forma, se a tabela for muito grande, o resultado pode demorar um pouco mais, se comparado a seleções feitas com operadores que utilizam dados exatos. Portanto, o ideal é ter atenção para evitar expressões muito complexas, que possam prejudicar a performance da aplicação.

A utilização do comando SQL LIKE ajuda a realizar buscas mais detalhadas. Isso porque ele consegue fazer uma comparação em cada caractere contido no campo. Ele é indicado quando não temos o termo exato do que queremos recuperar ou quando queremos selecionar um grupo de registros com alguns caracteres semelhantes. Para extrair o máximo desse recurso, é preciso ter atenção às boas práticas para garantir o resultado esperado.

Gostou do nosso conteúdo sobre o comando SQL LIKE? Então, confira o que é DBA e quais as atribuições dessa carreira!