Está en la página 1de 7

Filtros mais específicos

Professor: Jean Carlo Capote Santos


 

Introdução

Nesse módulo, você verá como fazer pesquisas mais abrangentes em um


banco de dados com a linguagem SQL, para que possa realizar filtros de pesquisa que
encontrem tanto resultados específicos quanto resultados mais abertos, ou seja, com
mais de um resultado, bem como entender um pouco mais sobre filtros de pesquisa.

Filtro:

O que você já sabe fazer em uma pesquisa SQL?

Por enquanto você viu pesquisas usando apenas os seguintes operadores para
a clausula WHERE:

● =
● <>
● >
● <
● >=
● <=
● AND
● OR

Obs.: Acreditamos ser desnecessário relembrar o que eles fazem…

A partir de agora, iremos conhecer dois novos operadores (BETWEEN e LIKE),



bem como as ​wildcards, muito importantes para o bom funcionamento de um filtro.

Mas antes de você começar a ver os novos conhecimentos, segue abaixo a


tabela, já populada, sobre a qual realizaremos as pesquisas de exemplo:

1
Filtros mais específicos
Professor: Jean Carlo Capote Santos
 

Obs.: Não é uma má ideia replicar esse banco de dados no PHPMyAdmin para
testar os exemplos mostrados e também fazer seus próprios testes...

BETWEEN


Primeiro, se você não sabe o significado de ​between, pesquise. Pesquisou?
Então, é exatamente esse tipo de filtro que ele permite realizar. Todos os campos com
valores numéricos aceitam filtros usando esse operador. Veja alguns exemplos:

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nascimento` ​BETWEEN ​'1990-01-01' ​AND


'1999-12-31'

Resultado:

Comentário:

A pesquisa encontrou todos os clientes que nasceram entre 01/01/1990 e 31/12/1999


(ou seja, todos os nascidos na década de 90).

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​id`​ ​BETWEEN ​'3' ​AND ​'6'

Resultado:

Comentário:

Repare que os clientes de ‘id’ 3 e 6 são incluídos no resultado, ou seja o BETWEEN


funciona como “entre” e “inclusive”.

2
Filtros mais específicos
Professor: Jean Carlo Capote Santos
 

LIKE

Em relação a essa palavra, a tradução pode não ser tão óbvia, então para
mantermos o foco, deixe isso de lado… Esse operador tem como função permitir busca
de padrões nos valores dos campos, e é trabalhado em conjunto com as ​wildcards.

Wildcards

As ​wildcards (coringas) são caracteres que permitem que se aceite qualquer


caractere em certas partes de uma pesquisa, para que, juntamente com o LIKE, se
possa buscar resultados como “todos os clientes ​que começam com a letra ‘G’”, “todos
os valores ​que terminam com ‘0’” ou “todos os comentários ​contendo a palavra ‘sql’”.

As principais ​wildcards são:

● % → aceita qualquer caractere em qualquer quantidade;


● _ → aceita qualquer caractere no lugar em que ele estiver

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​LIKE ​'Mar%'

Resultado:

Comentário:

Encontrou todos os clientes cujo nome ​começa com ​“Mar”, sem se importar com o que
está depois disso.

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​LIKE ​'%lina'

3
Filtros mais específicos
Professor: Jean Carlo Capote Santos
 

Resultado:

Comentário:

Encontrou todos os clientes cujo nome ​termina com ​“lina”, sem se importar com o que
está antes disso.

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​LIKE ​'%van%'

Resultado:

Comentário:

Encontrou todos os clientes cujo nome ​contém ​“van”, sem se importar com o que está
antes ou depois disso. Repare que foi encontrado até um resultado cujo “V” está em
maiúsculo, ou seja, ​o LIKE não é case-sensitive​.

-----------------------------------------------------------------------------------------------------------------.

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​LIKE ​'%Marc%'

Resultado:

4
Filtros mais específicos
Professor: Jean Carlo Capote Santos
 

Comentário:

Exemplo parecido com o anterior, porém repare que apesar do “%” antes do “Marc”, o
registro de id 000008 também foi encontrado, ou seja, ​o “%” não exige que haja um
caractere em seu lugar​.

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​LIKE ​'Mar%elina'

Resultado:

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​LIKE ​'Mar_o %'

Resultado:

Comentário:

Encontrou todos os nomes que começam com “Mar”, tenham em seguida um caractere
qualquer ​(graças ao “_”), depois a letra “o”, posteriormente um espaço, e qualquer
coisa após isso.

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​LIKE ​'%b_n%'

5
Filtros mais específicos
Professor: Jean Carlo Capote Santos
 

Resultado:

-----------------------------------------------------------------------------------------------------------------

NOT LIKE

Também pode ser usado o NOT antes do LIKE, para encontrar resultados
contrários do proposto na expressão:

-----------------------------------------------------------------------------------------------------------------

Pesquisa:

SELECT ​* ​FROM ​`​clientes​` ​WHERE ​`​nome`​ ​NOT LIKE ​'M%'

Resultado:

-----------------------------------------------------------------------------------------------------------------

Sobre filtros

Um filtro nada mais é do que um formulário de pesquisa, que deve sempre


auxiliar o usuário a encontrar resultados mais específicos. O filtro não precisa ser
aplicado em todos os casos. Além disso, cada caso deve ser analisado de acordo com
sua necessidade (isso está diretamente ligado com a regra de negócio), por exemplo,
existem casos que precisam de filtros mais complexos¹, já outros um simples campinho
de busca já resolve²:

6
Filtros mais específicos
Professor: Jean Carlo Capote Santos
 

Portanto, não vá simplesmente colocando todos os campos exibidos naquela


pesquisa no filtro, analise quais são pertinentes ao se desejar resultados mais
específicos. Existem três principais situações que devem ser pensadas ao definir um
campo de um filtro: se esse filtro deve ser por um valor específico (como “sexo”, onde
as opções são finitas) [primeiro caso]; por uma faixa de valores (como “de certa data
até tal data”) [segundo caso]; ou por um valor mais aberto (como permitir que o usuário
digite uma string e o sistema encontre todos os nomes que contém aquela string)
[terceiro caso]. No primeiro caso, normalmente se opta por um campo ​select; no
segundo caso quase sempre se usa campos ​text “de” e “até” e na sintaxe SQL usa-se
a cláusula BETWEEN; e no terceiro caso se usa um campo de texto, que na sintaxe
fica na cláusula ​LIKE ‘%​valor​%’​.

Outra coisa importante é que normalmente não se obriga o usuário a preencher


todos os campos de um filtro. Ex: Imagine uma página que exibe todos os funcionários
(nome e função) de uma empresa, e um filtro foi implementado na consulta. Se o
usuário quiser pesquisar seus funcionários por nome e função, tudo bem, mas se ele
quiser apenas por função e deixar o nome em branco, ou vice-versa, também pode ser
feito.

Na criação de um filtro deve-se contar muito com o bom senso, facilidade,


usabilidade e utilidade, portanto nada do que foi falado acima é “regra mortal”, são
apenas as possibilidades mais comuns. E muito cuidado com a escolha dos campos de
um filtro, pois ele deve ser útil, não burocrático (na maioria das vezes), e, obviamente,
deve mostrar os resultados desejados pelos usuários e facilitar a vida deles.

También podría gustarte