Filtrar dados: between, like e IN em sql server, access e mysql

Filtrar dados com between, like e IN em consultas a banco de dados é uma prática comum e suportada pelos principais bancos de dados, como o SQL Server, Access, Mysql, Oracle e outros. Filtros são extramente úteis para dar performance às consultas, aliviando possíveis sobrecargas no banco de dados.

 

A condição Between

Use a condição Between para retornar linhas baseadas em uma faixa de valores. Muito proprício para campos do tipo numérico ou data.

Como exemplo poderemos efetuar uma consulta para retornar o salário dos empregados que ganham entre 1000 e 5000 ou uma consulta por todos os prédios tombados entre o ano 2000 e 2005.

Veja um exemplo abaixo:

SELECT nome, data_nascimento, cidade, estado
FROM empregados
WHERE data_nascimento between '01/01/1975' and '12/13/1985'

No exemplo as linhas retornadas tem a data de nascimento do empregado entre 01 de janeiro de 1975 e 13 de dezembro de 1985. (observe que a comparação de data deve ser feita no formato americano).

Alem da coluna do tipo data é possível também usar o between em uma coluna numérica.

A condição IN e Not IN

Use a condição IN para retornar linhas cujos valores atendem a uma determinada lista ou a NOT IN para os valores que não atendem a lista.

Entenda por lista valores separados por vírgulas, exemplo: 1,2,3,4 ou 'um','dois','tres'.

Esta condição poderia efetuar uma imobiliária encontrar por exemplo, todos os imóveis alugados nas cidades de São Paulo, Rio de Janeiro e Belo Horizonte ou todos os prédios comerciais de luxo disponíveis nos bairros do Broklin, Morumbi e Vila Olimpia.

Veja um exemplo abaixo:

SELECT código_empregado, nome, data_nascimento, cidade
FROM empregados
WHERE codigo_empregado in(3,7,9,11,14)

Neste exemplo as linhas retornadas tem o valor da coluna código_empregado igual a 3,7,9,11 e 14.

Se trocarmos a condição IN por NOT IN, teremos o resultado inverso.

SELECT código_empregado, nome, data_nascimento, cidade
FROM empregados
WHERE codigo_empregado not in(3,7,9,11,14)

 

A condição Like e Not Like

Use a condição LIKE para executar pesquisas curingas.

O caracter curinga %(porcentagem) deve ser usado para substituir um caracter ou grupo de caracteres, não importando a sua natureza.

Esta condição é muito usada na internet para fazer as buscas tradicionais, como no caso dos sites de busca (google, yahoo, MSN, etc).

SELECT codigo_empregado, nome, data_nascimento, cidade
FROM empregados
WHERE nome Like '%MA%'

Neste exemplo foi mostrado as linhas cujo nome tinha a sequencia de caracteres MA.

Agora veja o mesmo exemplo com o not like.

SELECT codigo_empregado, nome, data_nascimento, cidade
FROM empregados
WHERE nome Not Like '%MA%'

Neste caso será mostrado todas as linhas, exceto as que tiverem MA no nome.

OBS: O Access as vezes trata de forma diferentes os caracteres curingas nestas consultas, mas funciona normalmente em Sql Server e MySQL.

Outros assuntos relacionados:

COMPARTILHAR |                






// Comentários

Juliana
XXXXX
07/08/2008 08:33:00

Parabéns...

Muito bom!!!

Adorei!

Obrigado.

 
Paulo Ladislau
Votuporanga
12/11/2008 14:46:00

Gostariade saber como faço para:

Tendo duas tabelas A e B;

Da tabela A no campo NOME quero buscar na tabela B esse nome, usando o LIKE ou algo que permita eu pesquisar por partes.

Como faço?

Obrigado

 
Izair
Curitiba
29/03/2009 10:56:00

Olá! Parabéns pelo seu Blog.

Eu gostaria de saber como pesquisar um código no access através de uma consulta baseada num controle não acoplado de um formulário, ignorando os zeros à esquerda, na hora de digitar, mas que os zeros apareçam normalmente no resultado. Ex: código:000501 digitar só:501.

Obrigado!!!

 
Gabi
Belo Horizonte
28/05/2009 16:40:00

Salvou meu dia!!!! Agora consigo fazer prova , pq a minha professora naum explica nada!!!

 
Róger
Lajeado
20/10/2009 20:12:00

valeu... bom!!

 
Sol Beltrame
Curitiba
03/11/2009 13:41:00

Amigo, parabéns pelo blog e o artigo ficou muito interessante! Porém fiquei com uma dúvida... como faço pra fazer vários WHEREs em uma consulta? (vai ser um formulário de "busca avançada" com os campos CIDADE, CAPACIDADE, VALOR). estou programando em PHP e o bd é MySQL. se puder me ajudar, agradeço muito! muito obrigado!

 
vinicius
ilheus
21/08/2010 18:10:00

gostaria de saber o seguinte.. tenho uma tabela com varias datas .... sendo que farei uma consulta assim:

entre dia 01/02/2010 e 10/02/2010 ... mas quero os registros que não estejam nesse periodo. Between MAS DOS REGISTROS QUE ELE NÃO ENCONTRAR ... OU SEJA SE FOR DIFERENTE QUE ESTA DATA ELE MOSTRA.

 

Use o formulário abaixo para fazer um comentário.
Se quiser fazer uma pergunta, use o Fórum do Blog do Luis.

Digite seu nome:


Digite seu email: (ele não será divulgado)


Cidade:


Comentários: (comentários inadequados serão excluídos)


 

2007-2010   //   Blog do Luis   //   Hospedado no UOLHost   //   Política de Privacidade   //   Mapa do Site   //   Eu creio em Deus