Como usar o operador BETWEEN do MySQL (com exemplos para números, datas e strings)

1. Introdução

Um dos elementos chave para executar consultas de forma eficiente em bancos de dados MySQL é o operador BETWEEN. Este operador é extremamente útil ao verificar se os dados estão dentro de um intervalo específico. Ele pode ser aplicado a números, datas e strings, tornando‑o uma ferramenta poderosa para filtrar e recuperar dados de forma eficiente. Neste artigo, explicaremos como usar o operador BETWEEN do MySQL, forneceremos exemplos práticos e destacaremos pontos importantes a serem considerados.

2. Sintaxe Básica do Operador BETWEEN

O que é o Operador BETWEEN?

O operador BETWEEN é usado na cláusula WHERE para verificar se o valor de uma coluna está dentro de um intervalo especificado. Sua sintaxe básica é a seguinte:

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

Por exemplo, se uma tabela armazena as idades dos funcionários, você pode usar este operador para extrair apenas aqueles dentro de um intervalo de idade específico.

Forma Negativa: NOT BETWEEN

Se você precisar pesquisar valores fora do intervalo especificado, pode usar a forma negativa NOT BETWEEN:

SELECT column_name
FROM table_name
WHERE column_name NOT BETWEEN start_value AND end_value;

3. Filtragem de Intervalo Numérico

Usando BETWEEN com Números

O operador BETWEEN é muito útil ao filtrar intervalos numéricos. Por exemplo, se você quiser extrair funcionários com salários entre 50.000 e 100.000, pode escrever a consulta da seguinte forma:

SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;

Dados de Exemplo:

employee_id

name

salário

1

Sato

45000

2

Suzuki

55000

3

Takahashi

75000

4

Tanaka

120000

Resultado:

employee_id

name

salário

2

Suzuki

55000

3

Takahashi

75000

Nesta consulta, apenas os funcionários cujos salários estão entre 50.000 e 100.000 são selecionados.

Operadores de Comparação vs. BETWEEN

A mesma condição também pode ser expressa com operadores de comparação, assim:

SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;

Usar BETWEEN torna a consulta mais concisa e fácil de ler. Isso é especialmente útil ao lidar com múltiplas condições de intervalo.

4. Filtragem de Intervalo de Data

Usando BETWEEN com Datas

O operador BETWEEN também pode ser aplicado a intervalos de datas. Por exemplo, para recuperar pedidos feitos entre 1º de janeiro de 2024 e 31 de dezembro de 2024, você pode escrever:

SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

Dados de Exemplo:

order_id

id_cliente

order_date

1

101

2024-01-15

2

102

2024-05-30

3

103

2025-03-01

Resultado:

order_id

customer_id

order_date

1

101

2024-01-15

2

102

2024-05-30

Como mostrado acima, o operador BETWEEN extrai dados dentro do intervalo de datas especificado.

Manipulação de Dados de Hora

Se a coluna de data incluir valores de hora, você precisa ter cuidado. Por exemplo, se a coluna order_date for do tipo DATETIME, usar BETWEEN incluirá valores da meia‑noite (00:00:00) da data de início até a meia‑noite do dia seguinte após a data final. Para garantir que você capture o dia inteiro, especifique o componente de hora explicitamente:

WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';

5. Filtragem de Intervalo de String

Usando BETWEEN com Strings

O operador BETWEEN também pode ser aplicado a dados de string. Por exemplo, se você quiser pesquisar produtos cujos nomes estejam alfabeticamente entre ‘A’ e ‘M’, a consulta ficaria assim:

SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';

Dados de Exemplo:

product_id

product_name

1

Apple

2

Banana

3

Mango

4

Orange

Resultado:

product_id

nome do produto

1

Apple

2

Banana

3

Mango

Considerações sobre Ordem Alfabética

Ao filtrar strings com BETWEEN, lembre‑se de que a avaliação é baseada na ordem alfabética. Além disso, dependendo das configurações de collation do banco de dados, a sensibilidade a maiúsculas e minúsculas pode se aplicar. Por exemplo, 'a' e 'A' podem ser tratados como valores diferentes. Sempre confirme as configurações de collation ao trabalhar com intervalos de strings.

6. Notas Importantes sobre o Operador BETWEEN

Ordem dos Valores de Intervalo

Tenha cuidado com a ordem dos valores de intervalo. Se o valor inicial for maior que o valor final, a consulta pode retornar resultados não intencionais:

SELECT * 
FROM table_name 
WHERE column_name BETWEEN 100 AND 50;  -- Unintended result

Além disso, lembre‑se de que BETWEEN é inclusivo em ambas as extremidades do intervalo, portanto escolha seus valores com cuidado.

Índices e Desempenho de Consultas

O operador BETWEEN geralmente tem o mesmo desempenho que os operadores de comparação. Contudo, para otimizar o desempenho, a indexação adequada é essencial. Por exemplo, se você aplicar um índice a uma coluna de data, as consultas que utilizam BETWEEN nessa coluna serão executadas de forma mais eficiente.

7. Consultas Práticas e Casos de Uso

Usando BETWEEN em Múltiplas Colunas

Você também pode combinar condições BETWEEN em várias colunas. Por exemplo, se quiser filtrar produtos com base tanto no intervalo de preço quanto no de estoque, pode escrever:

SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
  AND stock BETWEEN 50 AND 200;

Esta consulta recupera produtos com preço entre 1000 e 5000, com níveis de estoque entre 50 e 200.

Uso Prático de NOT BETWEEN

Ao usar a forma negativa NOT BETWEEN, você pode extrair facilmente dados fora de um intervalo específico. Por exemplo, para encontrar funcionários cujos salários são menores que 50.000 ou maiores que 100.000, pode escrever:

SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;

Resultado:

employee_id

name

salário

1

Sato

45000

4

Tanaka

120000

Esta consulta recupera funcionários cujos salários não estão entre 50.000 e 100.000. Usar NOT BETWEEN torna simples aplicar a condição oposta.

8. Exemplos Visuais de Consultas

Para tornar os resultados das consultas mais intuitivos, diagramas visuais podem ser úteis. Por exemplo, você pode ilustrar o efeito de BETWEEN da seguinte forma:

Price Range: [----- 1000 ---- 5000 -----]
Product A Price: 3000 (Inside Range)
Product B Price: 6000 (Outside Range)

Essas ilustrações facilitam a compreensão de se um valor está dentro do intervalo especificado na consulta.

9. Resumo

O operador BETWEEN é uma ferramenta poderosa no MySQL para buscas baseadas em intervalos. Ele pode ser aplicado a dados numéricos, de data e de texto, permitindo escrever consultas que são ao mesmo tempo concisas e eficientes. No entanto, é importante entender suas características — como a inclusividade dos valores de fronteira e a importância de uma indexação correta — para evitar resultados inesperados. Aplicando esse conhecimento, você pode otimizar o desempenho das consultas e extrair apenas os dados necessários de forma mais eficaz.

10. Referências

Para mais detalhes e casos de uso avançados, você pode consultar a documentação oficial do MySQL ou livros especializados em bancos de dados. Além disso, experimentar as consultas por conta própria é uma das melhores maneiras de aprofundar sua compreensão de como o operador BETWEEN funciona.