SQL BETWEEN: selecionando valores em um intervalo!

No SQL, o comando SQL BETWEEN é importante para realizar a seleção de ranges de registros em uma tabela, ou seja, se quisermos selecionar as pessoas com idade entre 20 e 30 anos, por exemplo, esse é um dos recursos disponíveis na linguagem SQL para realizarmos essa tarefa.

Porém, é preciso atenção ao utilizar esse recurso, pois ele tem algumas características que, se não forem bem observadas, podem fazer com que o resultado da seleção não corresponda ao esperado.

Apesar disso, esse comando é um poderoso recurso para as pessoas desenvolvedoras utilizarem em suas aplicações para fazer a seleção de ranges de registros. Para demonstrar como ele funciona, preparamos este post com os seguintes tópicos:

Boa leitura!

O que é o comando SQL BETWEEN?

O comando SQL BETWEEN é utilizado para selecionarmos um determinado range de registros em uma tabela, ou seja, definimos um ponto inicial e final para que o SQL recupere todos os dados pertencentes a ele.

Imagine que temos um cadastro de alunos e queremos selecionar aqueles que pertençam a uma determinada faixa de idade. Com esse comando, podemos realizar essa seleção de forma simples e rápida.

Qual a sintaxe do comando SQL BETWEEN?

A sintaxe do comando SQL BETWEEN é:

SELECT coluna1, coluna2,... colunaN
    FROM nome_tabela
WHERE nome_coluna BETWEEN valor_inicial AND valor_final;

Em que:

  • coluna1, coluna2, …colunaN: representam as colunas selecionadas na tabela;
  • nome_tabela: indica o nome da tabela do banco de dados;
  • nome_coluna: representa o nome da coluna para compor a expressão de comparação entre os valores inicial e final;
  • valor_inicial e valor_final: indicam os valores iniciais e finais para compor o range de seleção.

É importante dizer que o comando BETWEEN pode ser usado em dados do tipo numérico, textos ou datas. Ele deve ser utilizado em conjunto com a cláusula WHERE. Além disso, os valores iniciais e finais são obrigatórios e devem ser separados pelo operador AND, necessário para indicar a relação entre os valores. Se esses cuidados não forem tomados, o SQL retorna um erro de sintaxe.

5 exemplos de uso do comando SQL BETWEEN

Existem diferentes formas de utilizar o comando SQL BETWEEN e a melhor forma de visualizar isso é por meio de exemplos práticos. Para isso, vamos criar uma pequena base de dados chamada “curso”, que contém uma tabela de “alunos” com os campos:

  • nome;
  • idade;
  • data de conclusão;
  • nota de aprovação.

Esses dados servirão de apoio para demonstrarmos como utilizar o comando SQL BETWEEN. Veja o script para a criação da nossa base:

Criação da base SQL Between

1. Usando SQL NOT BETWEEN 

O objetivo do comando BETWEEN é selecionar os dados que fazem parte de um intervalo. Entretanto, é possível fazer a seleção dos registros que estão fora desse intervalo. Para isso, utilizamos o operador NOT em conjunto com a instrução BETWEEN.

No código a seguir, selecionamos todas as pessoas que tenham idade fora do intervalo entre 20 a 30 anos. Veja como fica a instrução SQL:

SELECT nome_aluno, idade FROM alunos WHERE idade NOT BETWEEN 20 AND 30

Resultado:
Paulo Silva / 18
José Paulo / 35
João Pedro / 40
Valéria Souza / 19

É importante observar que, ao utilizarmos o NOT BETWEEN, os valores inicial e final utilizados para compor a expressão de seleção não fazem parte do resultado. Por isso, apesar de termos uma pessoa na tabela com idade igual a 20 anos, ela não é exibida entre os registros selecionados.

2. Usando SQL BETWEEN com datas 

A cláusula BETWEEN também pode ser utilizada em campos que armazenam valores do tipo data e hora. Isso permite, por exemplo, recuperar os registros em uma tabela referentes a um determinado período — inclusive, é possível fazer a seleção apenas por parte da data, como apensas pelo mês ou ano.

No exemplo a seguir, vamos selecionar os alunos de nossa tabela que tenham concluído o curso no ano de 2020. Confira a instrução SQL abaixo:

SELECT nome_aluno, data_conclusao FROM alunos WHERE data_conclusao BETWEEN '2020-01-01' AND '2020-12-31'

Resultado:
Maria Paula / 2020-11-30
Sandra Soares / 2020-01-20
José Paulo / 2020-03-30
Solange Almeida / 2020-01-01

Perceba que definimos o range de seleção com a data inicial igual a ‘2020-01-01’ e a final igual a ‘2020-12-31’, ou seja, utilizamos a formatação YYYY-MM-DD. Isso porque estamos utilizando o banco de dados MySQL e esse é o padrão de formatação de data utilizado por ele.

É importante dizer que os comandos SQL fazem parte da linguagem SQL e é utilizado em todos os bancos de dados relacional. Entretanto, existem diferenças em relação aos tipos de dados trabalhados em cada banco. A forma de trabalhar com datas, por exemplo, é uma das variações existentes entre os vários bancos disponíveis.

Portanto, dependendo do banco utilizado, a instrução acima pode não funcionar corretamente, pois a formatação de data usada por ele pode ser outra. Por isso, ao trabalhar com datas, é importante consultar a documentação do banco de dados escolhido para entender quais os formatos disponíveis e, assim, garantir a manipulação desse conteúdo da forma correta.

3. Usando SQL BETWEEN com valores numéricos

O comando BETWEEN também pode ser utilizado com valores numéricos, sejam eles do tipo inteiro, como no primeiro exemplo que demonstramos, quanto com os números decimais. No código a seguir, selecionamos todos as pessoas da tabela alunos que tenham o valor da média de aprovação entre 80.0 e 90.5. Confira a instrução abaixo:

SELECT nome_aluno, nota_aprovacao FROM alunos WHERE nota_aprovacao BETWEEN 80.0 AND 90.50

Resultado:
Maria Paula / 90.50
Cláudia Barbosa / 80.50
José Paulo / 85.70
João Pedro / 90.00

Perceba que no critério de seleção do comando, indicamos o valor máximo como 90.5 e houve um registro retornado com essa nota correspondente. Isso significa que os valores definidos como valor inicial e valor final também fazem parte do range retornados pelo comando BETWEEN.

4. Usando SQL BETWEEN com valores de texto

Outra forma de utilizar o comando BETWEEN é para selecionar ranges de textos. É importante entender como esse recurso trabalha com a comparação de textos, pois o resultado pode não corresponder ao esperado.

A melhor forma de explicar é com um exemplo prático. Portanto, vamos selecionar na nossa tabela os registros dos alunos que estejam entre as letras “M” e “P”. O comando SQL para essa consulta é:

SELECT nome_aluno FROM alunos WHERE nome_aluno between 'M' and 'P'

Resultado:
Maria Paula
Mariana Santos

Perceba que o resultado da nossa consulta na tabela alunos retornou apenas dois nomes. Se olharmos na tabela, veremos que existe um aluno (Paulo Silva) que começa com a letra “P”. Entretanto, ele não está listado no resultado da busca.

Isso acontece porque é como se disséssemos ao SQL: traga todo mundo que é maior ou igual a M e menor ou igual a P. Portanto, o nome Paulo é maior que somente a letra P. Por isso, ele não retorna esse registro.

5. Usando SQL BETWEEN IN 

O BETWEEN também pode ser utilizado com outros operadores, como o IN, que permite comparar outro campo no critério de seleção após a separação do range, o que torna a busca mais refinada. Veja um código de exemplo:

SQL Between in

No código acima, selecionamos todos os alunos com nota de aprovação entre 70.0 a 100.0 e, também, com a idade de 25, 30 e 40 anos.

Boas práticas ao usar o comando SQL BETWEEN

Ao utilizar o comando SQL BETWEEN é importante observar o tipo de dados que farão parte do critério de seleção, pois, como demonstramos nos exemplos, existem particularidades para cada um deles. O ideal é sempre realizar testes para garantir que o resultado atende à necessidade da aplicação.

No banco de dados MySQL, por exemplo, há a recomendação para sempre que o comando BETWEEN for utilizado com os tipos de dados Date, Time e Datetime, utilizar a função

Cast ()

para converter a string para o tipo de dado usado. O objetivo é garantir que a comparação será feita com valores do mesmo tipo. Veja como fica a instrução do nosso exemplo número dois com essa recomendação:

Exemplo de utilização de código SQL Between

O comando SQL BETWEEN é um dos recursos disponíveis na linguagem SQL que ajuda a realizar a seleção de um range de dados de uma forma mais refinada. Ele pode ser utilizado com diferentes tipos de dados, como textos, números e datas. Portanto, tenha atenção às recomendações de boas práticas e aproveite ao máximo o que esse comando oferece.

Gostou do nosso conteúdo sobre como utilizar o comando SQL BETWEEN? Então, confira nosso post sobre o que é trigger, para que serve e como usar em SQL!