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.
Índice deste artigo
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, estadoFROM empregados
WHERE data_nascimento between '1975-01-01' and '1985-12-13'
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 ano-mês-dia. Isto acontece pois é neste formato que as datas são armazenadas no banco de dados. Isto faz bastante sentido, pois ele parte do maior (ano) para o menor (dia).
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, estadoFROM empregados
WHERE salario between 1500 and 2000
No exemplo acima será mostrado os registros cujos salários estiverem entre 1500 e 2000, inclusive.
Além 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','três'.
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 Brooklin, Morumbi e Vila Olimpia.
Veja um exemplo abaixo:
SELECT codigo_empregado, nome, data_nascimento, cidadeFROM empregados
WHERE codigo_empregado in(3,7,9,11,14);
Neste exemplo as linhas retornadas tem o valor da coluna codigo_empregado igual a 3,7,9,11 e 14.
Outra possibilidade é usar valores do tipo String na cadeia do IN, veja um exemplo abaixo:
SELECT codigo_empregado, nome, data_nascimento, cidadeFROM empregados
WHERE estado in('SP','MG','RJ','ES');
Se trocarmos a condição IN por NOT IN, teremos o resultado inverso.
SELECT codigo_empregado, nome, data_nascimento, cidadeFROM 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, cidadeFROM 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, cidadeFROM empregados
WHERE nome Like 'Maria%'
No exemplo acima ele mostraria os registros cujos nomes iniciam por Maria.
SELECT codigo_empregado, nome, data_nascimento, cidadeFROM 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, cidadeFROM 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
- 10 itens sobre formas e ideias para ganhar dinheiro
- 10 itens sobre o currículo ou curriculum para arrumar emprego
- Como calcular porcentagem, fórmula para desconto e aumento com Excel
- Como consultar preço de remédios e medicamentos genéricos?
- Cursos técnicos gratuitos a distância: e-Tec Brasil
- Os formatos de imagens para a web: JPEG ou JPG, GIF e PNG
- Faculdades e cursos EAD e presencial em Taubaté
- Fontes arial, verdana ou georgia. Qual a melhor fonte para a web?
- Sites das Principais Revistas do Mundo
- O que são transações e como usar os comandos Begin, Commit e Rollback