Postgres: do in, like, ilike
Como utilizar as clausulas IN, LIKE, ILIKE no PostgreSQL em um SELECT.
Vamos utilizar com exemplo a tabela abaixo:
tabela
Id | Nome |
---|---|
1 | Elias |
2 | José |
3 | Manoel |
4 | Elizeu |
5 | Michael |
Comando IN
Para trazer apenas o id 1 e 5:
Exemplo:
SELECT * FROM nome_da_tabela WHERE id IN (1, 5);
Se desejar filtrar pelo nome “caracteres”, é necessário utilizar aspas simples para cada palavra, vamos filtrar o José e Manoel.
Exemplo:
select * from NOME_TABELA where nomes in ('José', 'Manoel');
Obs..: O in faz distinção entre maiúsculas e minusculas, então por exemplo, se filtrar por josé não exibiria o id 2 José, porque o J é maiúsculo.
Uso do LIKE em um select O like é um comando muito útil no dia-a-dia de um desenvolvedor ou DBA, ele serve para trazer partes de palavras ou números. O like é case-sensitive, então ‘maria’ é diferente de ‘MARIA’.
O like utilza coringas para substituir partes do texto, segue os coringas abaixo:
% Significa qualquer quantidade de caracteres.
_ Significa um caractere.
Utilizando o coringa %. Para buscar todas as palavras que começam com a letra E.
select * from NOME_TABELA where nome like 'E%'
Buscar todas as palavras que terminam com a letra ‘a’;
select * from NOME_TABELA where nomes like '%a';
Buscar todas as palavras que contenham a sílaba ‘li’.
select * from NOME_TABELA where nomes like '%li%';
Buscar todas palavras que contenham a letra ‘a’ alguma coisa e depois a letra ‘e’ mais alguma coisa escrita.
select * from NOME_TABELA where nomes like '%a%e%';
Utilizando o coringa _ . O coringa _ (underline) substitui um caractere, ou seja, uma letra.
Para buscar por exemplo o nome Elias, sem considerar a primeira letra do nome.
select * from NOME_TABELA where nomes like '_lias';
Podemos substituir quantos forem necessários, só colocar mais “underlines”, exemplo:
select * from NOME_TABELA where nomes like '__ias';
Podemos combinar com o coringa %.
select * from NOME_TABELA where nomes like '_li%';
Uso do ILIKE no select O ilike possui as mesmas características do like, porém não é case-sensitive, ou seja, não faz distinção entre maiúsculas e minusculas, então ‘MARIA’ é igual ‘maria’ para o ilike.
O ilike utiliza os mesmos coringas do like % e _.
Vou apenas postar os selects utilizando ilike porque as regras são as mesmas do like, apenas ele nao é case-sensitive.
Usando o coringa %. select * from NOME_TABELA where nome ilike 'e%'
select * from NOME_TABELA where nomes ilike '%a';
select * from NOME_TABELA where nomes ilike '%li%';
select * from NOME_TABELA where nomes ilike '%a%e%';
Usando o coringa _. select * from NOME_TABELA where nomes ilike '_lias';
select * from NOME_TABELA where nomes ilike '__ias';
select * from NOME_TABELA where nomes like '_li%';