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:
- SELECT: é o comando responsável para a seleção de algum dado em alguma tabela na nossa base de dados;
- coluna1, coluna2, colunaN: correspondem ao nome da coluna selecionada pelo comando SELECT;
- FROM: cláusula utilizada para determinar qual tabela devemos fazer a consulta dos dados, qual delas será utilizada para esse fim;
- nome_tabela: representa o nome de tabela em que a busca será realizada;
- WHERE: em português, where significa onde. Ou seja, é uma condição muito utilizada em consultas nas quais desejamos atribuir condições específicas a elas, como, por exemplo, filtrar apenas vendas acima de mil reais, filtrar apenas alunos com média superior a 5, etc;
- 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.
8 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.
Criando a base de dados para os exemplos
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.
Resultado da base de dados criada
Para selecionarmos a base de dados criada acima, no caso, a tabela alunos, digitamos o seguinte comando:
SELECT * FROM alunos;
O resultado será o seguinte:
Id | Nome | Sobrenome | Cidade |
1 | João Paulo | Silva | São Paulo |
2 | Maria Paula | Barbosa | São Paulo |
3 | Joana | Santos | São Paulo |
4 | Joaquim | Pereira | Belo Horizonte |
5 | Neide | Saraiva | Belo Horizonte |
6 | josé paulo | fonseca | Rio de Janeiro |
7 | João Luiz | Silva | Rio de Janeiro |
8 | Paulo Henrique | Cardoso | São Paulo |
9 | José Pedro | Neto | Belo Horizonte |
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
7. Pesquisando por palavras que não contêm a letra “e”
Para pesquisarmos palavras que não têm alguma letra nelas, utilizaremos o comando NOT LIKE. Nesse caso, para selecionarmos os nomes dos alunos que não possuem a letra “e”, utilizamos o seguinte comando:
SELECT * FROM alunos WHERE nome NOT LIKE '%e%';
O resultado exibido é o seguinte:
Podemos também, da mesma forma, selecionarmos outras informações, como o sobrenome ou a cidade que não possui a letra “e” nela. Bastaria apenas trocar o campo da consulta que você deseja fazer por outro.
8. Utilizando escape
Digamos que você queira pesquisar a letra “s” como um literal na condição LIKE, para pegar apenas os sobrenomes que comecem com “s”. Você pode fazer isso usando um caractere Escape.
Em nosso exemplo, usaremos o “%” como caractere de escape na condição LIKE:
SELECT *
FROM alunos
WHERE sobrenome LIKE 'S%%' ESCAPE '%';
O resultado será o seguinte:
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!