Como filtrar dados com between, like e IN em SQL Server e MySQL?

Conheça as condições Between, In, Not In, like e not like, usadas para criar filtros em consultas com a linguagem SQL e aplicável a diversos bancos de dados. Diferença entre branco ou vazio e nulo em banco de dados e programação.

Home » Tecnologia

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 exatamente ú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 propí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).

Outro exemplo pode ser feito com valores numéricos e aplicado a um campo do tipo int, decimal ou outro numérico.

SELECT nome, data_nascimento, cidade, estado

FROM empregados

WHERE salario between 1500 and 2000

No exemplo acima será mostrado os registros cujos salários estiverem entre 1500 e 2000, inclusive.

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.

Outra possibilidade é usar valores do tipo String ca cadeia do IN, veja um exemplo abaixo:

SELECT código_empregado, nome, data_nascimento, cidade

FROM empregados

WHERE estado in('SP','MG','RJ','ES');

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 '%Maria%'

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

Há duas outras possibilidades com este mesmo exemplo. Veja:

SELECT codigo_empregado, nome, data_nascimento, cidade

FROM empregados

WHERE nome Like 'Maria%'

No exemplo acima ele mostraria os registros cujos nomes iniciam por Maria.

SELECT codigo_empregado, nome, data_nascimento, cidade

FROM empregados

WHERE nome Like '%Maria'

No exemplo acima é o inverso, ou seja, ele mostraria os registros cujos nomes terminam por Maria.

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.

Diferença entre branco ou vazio e nulo em banco de dados e programação

Em tecnologia da informação é comum o uso do valor nulo e também do valor vazio ou branco, isto de aplica a banco de dados ou a linguagens de programação. Mas qual a diferença existente entre eles? Pode ser substituído um pelo outro sem problemas?

Em termos de programação e banco de dados o null ou nulo é tipo de valor que não pode ser comparado a nada, ou seja, é nulo. Ele é assumido em alguns bancos de dados automaticamente quando estiver configurado para aceitá-lo e também pode ser definido em termos de programação em praticamente todas as linguagens. Para permitir que um banco aceite valores nulos é necessário indicar isso na criação das tabelas como no exemplo abaixo:

CREATE TABLE pessoas(

nome varchar(100) null,

telefone varchar(50) not null

)

No exemplo acima, a tabela pessoas aceitará valor nulo para o nome, mas não para o telefone.

Já o vazio ou o branco é o valor o que é comparável uma vez que recebe de fato um determinado código quer seja ASCII, UTF-8 ou outro conjunto de caracteres qualquer. Na codificação ASCII seu valor é representado pela sequência de caracteres 255 e na programação é usado aspas vazia como sendo o valor para comparação como pode ser visto no exemplo abaixo:

$x = “”; Exemplo em PHP

Dim x as string = “” Exemplo em Visual Basic


VEJA TAMBÉM:

CANAL NO YOUTUBE

INSCREVA-SE:



Sistemas Web

Playlist de SQL

Youtube Youtube Youtube
© 2021 - Utilidade Pública: Tecnologia, Educação e Cidadania.