Mudanças entre as edições de "Postgres: do in, like, ilike"
(→coringa _) |
|||
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
Como utilizar as clausulas IN, LIKE, ILIKE no PostgreSQL em um SELECT. | Como utilizar as clausulas IN, LIKE, ILIKE no PostgreSQL em um SELECT. | ||
− | + | Comandos aplicados ao exemplo de tabela de dados a seguir: | |
− | |||
− | |||
{| class="wikitable" | {| class="wikitable" | ||
Linha 38: | Linha 36: | ||
Exemplo: | Exemplo: | ||
− | + | SELECT * FRO ''nome_da_tabela'' WHERE nome IN ('José', 'Manoel'); | |
− | + | O comando IN faz distinção entre maiúsculas e minúsculas; ao filtrar pelo nome ''josé'' o resultado não exibe o ''id'' 2, porque o na tabela o ''José'' é grifado com a primeira letra maiúscula. | |
− | + | ==Comando LIKE== | |
− | |||
− | O like | + | Serve para buscar parte de palavras ou números. O like é ''case-sensitive'', logo ''maria'' é diferente de ''MARIA''. |
− | + | O comando ''LIKE'' utilza ''coringas'' para substituir partes do texto, conforme a seguir: | |
− | _ | + | *'''%''' - Significa qualquer quantidade de caracteres. |
+ | *'''_''' - Significa um caractere. | ||
− | + | ===Coringa ''%''=== | |
− | |||
− | + | Busca todas as palavras que começam com a letra ''E'': | |
− | + | SELECT * FROM 'nome_da_tabela'' WHERE nome LIKE 'E%'; | |
− | + | Busca todas as palavras que terminam com a letra 'a': | |
+ | |||
+ | SELECT * FROM NOME_TABELA where nome like '%a'; | ||
Buscar todas as palavras que contenham a sílaba ‘li’. | Buscar todas as palavras que contenham a sílaba ‘li’. | ||
− | + | SELECT * FROM 'nome_da_tabela'' WHERE nome LIKE '%li%'; | |
+ | |||
+ | Buscar todas palavras que contenham a letra ‘a’, acrescido de algum outro termo (%) e outros elementos a partir da letra (''e''); | ||
− | + | SELECT * FROM 'nome_da_tabela' WHERE nome LIKE'%a%e%'; | |
− | + | ===coringa '''_ '''=== | |
− | + | O coringa _ (''underline'') substitui um caractere, ou seja, uma letra. | |
− | O coringa _ (underline) substitui um caractere, ou seja, uma letra. | ||
− | + | Buscar o nome ''Elias'', sem considerar a primeira letra do nome. | |
− | + | SELECT * FROM 'nome_da_tabela' WHERE nome LIKE '_lias'; | |
− | + | O ''coringa'' _ (''underline'') permite substituir caracteres aleatórios de uma mesma sequência; para cada caracter é necessário colocar um ''coringa'' _ (''underline''), exemplo: | |
− | + | SELECT * FROM 'nome_da_tabela' WHERE nome LIKE '__ias'; | |
Podemos combinar com o coringa %. | Podemos combinar com o coringa %. | ||
Linha 83: | Linha 83: | ||
select * from NOME_TABELA where nomes like '_li%'; | select * from NOME_TABELA where nomes like '_li%'; | ||
− | + | ===Comando ILIKE=== | |
+ | |||
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 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. | ||
Linha 91: | Linha 92: | ||
Usando o coringa %. | Usando o coringa %. | ||
+ | |||
select * from NOME_TABELA where nome ilike 'e%' | select * from NOME_TABELA where nome ilike 'e%' | ||
Linha 100: | Linha 102: | ||
Usando o coringa _. | Usando o coringa _. | ||
+ | |||
select * from NOME_TABELA where nomes ilike '_lias'; | select * from NOME_TABELA where nomes ilike '_lias'; | ||
Edição atual tal como às 13h23min de 23 de novembro de 2021
Como utilizar as clausulas IN, LIKE, ILIKE no PostgreSQL em um SELECT.
Comandos aplicados ao exemplo de tabela de dados a seguir:
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 * FRO nome_da_tabela WHERE nome IN ('José', 'Manoel');
O comando IN faz distinção entre maiúsculas e minúsculas; ao filtrar pelo nome josé o resultado não exibe o id 2, porque o na tabela o José é grifado com a primeira letra maiúscula.
Comando LIKE
Serve para buscar parte de palavras ou números. O like é case-sensitive, logo maria é diferente de MARIA.
O comando LIKE utilza coringas para substituir partes do texto, conforme a seguir:
- % - Significa qualquer quantidade de caracteres.
- _ - Significa um caractere.
Coringa %
Busca todas as palavras que começam com a letra E:
SELECT * FROM 'nome_da_tabela WHERE nome LIKE 'E%';
Busca todas as palavras que terminam com a letra 'a':
SELECT * FROM NOME_TABELA where nome like '%a';
Buscar todas as palavras que contenham a sílaba ‘li’.
SELECT * FROM 'nome_da_tabela WHERE nome LIKE '%li%';
Buscar todas palavras que contenham a letra ‘a’, acrescido de algum outro termo (%) e outros elementos a partir da letra (e);
SELECT * FROM 'nome_da_tabela' WHERE nome LIKE'%a%e%';
coringa _
O coringa _ (underline) substitui um caractere, ou seja, uma letra.
Buscar o nome Elias, sem considerar a primeira letra do nome.
SELECT * FROM 'nome_da_tabela' WHERE nome LIKE '_lias';
O coringa _ (underline) permite substituir caracteres aleatórios de uma mesma sequência; para cada caracter é necessário colocar um coringa _ (underline), exemplo:
SELECT * FROM 'nome_da_tabela' WHERE nome LIKE '__ias';
Podemos combinar com o coringa %.
select * from NOME_TABELA where nomes like '_li%';
Comando ILIKE
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%';