Como buscar parte de um texto com LIKE no SQL?
O LIKE procura por pedaço de texto. Serve para quando você não tem o valor inteiro: a testemunha só lembra do começo do nome, você só tem o sobrenome, ou o jeito de escrever varia de linha para linha.
Como se escreve
SELECT <colunas> FROM <tabela> WHERE <coluna> LIKE '<molde>';
% qualquer pedaço de texto, inclusive nenhum
_ exatamente um caractere, qualquer um
Moldes: 'Jorge%' começa com, '%Amado' termina com, '%Ama%' contém.
Exemplo para rodar
Todos os exemplos usam duas tabelinhas: livro (titulo, autor, ano, paginas) e emprestimo (livro, retirado_em, leitor, dias).
SELECT titulo, autor FROM livro WHERE autor LIKE '%o';
| titulo | autor |
|---|---|
| O Cortiço | Aluísio Azevedo |
| Capitães da Areia | Jorge Amado |
| Triste Fim de Policarpo Quaresma | Lima Barreto |
Dicas
- LIKE sem nenhum % vira um = mais lento: LIKE 'Amado' só acha quem for exatamente Amado.
- No SQLite o LIKE não diferencia maiúscula de minúscula nas letras de A a Z: LIKE 'jorge%' acha Jorge Amado. Mas isso vale só para o alfabeto sem acento — para ele, ç e Ç são letras diferentes, e '%CORTIÇO' não acha O Cortiço.
- O _ conta uma posição exata. LIKE '196_' pega qualquer ano de 1960 a 1969.
- Quem tem o valor inteiro na mão usa =: é mais direto e não traz vizinho parecido junto.
Erros comuns
- Você escreveu
SELECT titulo FROM livro WHERE autor LIKE %Amado%;- O SQLite respondeu
near "%": syntax error- Como consertar
- O molde é texto e vai entre aspas simples: LIKE '%Amado%'.
- Você escreveu
SELECT titulo FROM livro WHERE autor LIKE 'Amado';- O SQLite respondeu
Nenhum erro, e nenhuma linha.- Como consertar
- Faltou o %. O valor gravado é Jorge Amado, então o molde que acha é '%Amado'.
- Você escreveu
SELECT titulo FROM livro WHERE autor LIKE '%a%';- O SQLite respondeu
Nenhum erro, e as seis linhas da tabela.- Como consertar
- Molde curto demais acha todo mundo: não existe autor sem a letra a. Dê mais letras, ou prenda uma das pontas: 'A%'.
Veja também
Onde isso aparece no jogo
No jogo Delegacia SQL, LIKE é o que resolve o inquérito 003, "Meia placa". SISPOL, que aparece nas dicas, é o computador da delegacia do jogo.