Come utilizzare l’operatore BETWEEN di MySQL (con esempi per numeri, date e stringhe)

1. Introduzione

Uno degli elementi chiave per eseguire query in modo efficiente nei database MySQL è l’operatore BETWEEN. Questo operatore è estremamente utile quando si verifica se i dati rientrano in un intervallo specifico. Può essere applicato a numeri, date e stringhe, rendendolo uno strumento potente per filtrare e recuperare dati in modo efficiente. In questo articolo spiegheremo come utilizzare l’operatore BETWEEN di MySQL, forniremo esempi pratici e evidenzieremo i punti importanti da tenere a mente.

2. Sintassi di base dell’operatore BETWEEN

Che cos’è l’operatore BETWEEN?

L’operatore BETWEEN viene usato nella clausola WHERE per verificare se il valore di una colonna rientra in un intervallo specificato. La sua sintassi di base è la seguente:

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

Ad esempio, se una tabella memorizza le età dei dipendenti, è possibile utilizzare questo operatore per estrarre solo quelli che rientrano in un determinato intervallo di età.

Forma negativa: NOT BETWEEN

Se è necessario cercare valori al di fuori dell’intervallo specificato, è possibile utilizzare la forma negativa NOT BETWEEN:

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

3. Filtraggio di intervalli numerici

Utilizzo di BETWEEN con i numeri

L’operatore BETWEEN è molto comodo quando si filtrano intervalli numerici. Ad esempio, se si desidera estrarre i dipendenti con salari compresi tra 50.000 e 100.000, è possibile scrivere la query come segue:

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

Dati di esempio:

id_dipendente

name

salario

1

Sato

45000

2

Suzuki

55000

3

Takahashi

75000

4

Tanaka

120000

Risultato:

ID dipendente

name

salario

2

Suzuki

55000

3

Takahashi

75000

In questa query vengono selezionati solo i dipendenti i cui salari rientrano tra 50.000 e 100.000.

Operatori di confronto vs. BETWEEN

La stessa condizione può essere espressa anche con gli operatori di confronto, così:

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

Utilizzare BETWEEN rende la query più concisa e più facile da leggere. Questo è particolarmente utile quando si gestiscono più condizioni di intervallo.

4. Filtraggio di intervalli di date

Utilizzo di BETWEEN con le date

L’operatore BETWEEN può essere applicato anche a intervalli di date. Ad esempio, per recuperare gli ordini effettuati tra il 1 gennaio 2024 e il 31 dicembre 2024, è possibile scrivere:

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

Dati di esempio:

order_id

customer_id

order_date

1

101

2024-01-15

2

102

2024-05-30

3

103

2025-03-01

Risultato:

order_id

id_cliente

order_date

1

101

2024-01-15

2

102

2024-05-30

Come mostrato sopra, l’operatore BETWEEN estrae i dati all’interno dell’intervallo di date specificato.

Gestione dei dati temporali

Se la colonna data include valori di tempo, è necessario fare attenzione. Ad esempio, se la colonna order_date è di tipo DATETIME, l’uso di BETWEEN includerà i valori dalla mezzanotte (00:00:00) della data di inizio fino alla mezzanotte del giorno successivo alla data di fine. Per assicurarsi di catturare l’intera giornata, è opportuno specificare esplicitamente la componente temporale:

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

5. Filtraggio di intervalli di stringhe

Utilizzo di BETWEEN con le stringhe

L’operatore BETWEEN può essere applicato anche ai dati di tipo stringa. Ad esempio, se si desidera cercare i prodotti i cui nomi rientrano alfabeticamente tra ‘A’ e ‘M’, la query sarà la seguente:

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

Dati di esempio:

product_id

nome prodotto

1

Apple

2

Banana

3

Mango

4

Orange

Risultato:

product_id

product_name

1

Apple

2

Banana

3

Mango

Considerazioni sull’ordine alfabetico

Quando si filtrano stringhe con BETWEEN, è importante tenere presente che la valutazione avviene in base all’ordine alfabetico. Inoltre, a seconda delle impostazioni di collazione del database, può essere applicata la sensibilità al maiuscolo/minuscolo. Per esempio, 'a' e 'A' potrebbero essere trattati come valori diversi. Verificate sempre le impostazioni di collazione quando lavorate con intervalli di stringhe.

6. Note importanti sull’operatore BETWEEN

Ordine dei valori di intervallo

Fate attenzione all’ordine dei valori di intervallo. Se il valore iniziale è maggiore del valore finale, la query potrebbe restituire risultati inattesi.

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

Inoltre, ricorda che BETWEEN è inclusivo di entrambe le estremità dell’intervallo, quindi scegli i valori con attenzione.

Indici e Prestazioni delle Query

L’operatore BETWEEN generalmente si comporta allo stesso modo degli operatori di confronto. Tuttavia, per ottimizzare le prestazioni, è essenziale un indicizzazione corretta. Ad esempio, se applichi un indice a una colonna di tipo data, le query che utilizzano BETWEEN su quella colonna verranno eseguite in modo più efficiente.

7. Query Pratiche e Casi d’Uso

Utilizzare BETWEEN su più colonne

Puoi anche combinare condizioni BETWEEN su più colonne. Ad esempio, se desideri filtrare i prodotti in base sia al prezzo che all’intervallo di scorte, puoi scrivere:

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

Questa query recupera i prodotti con prezzo compreso tra 1000 e 5000, con livelli di scorte compresi tra 50 e 200.

Uso pratico di NOT BETWEEN

Utilizzando la forma negativa NOT BETWEEN, puoi facilmente estrarre dati al di fuori di un intervallo specifico. Ad esempio, per trovare i dipendenti i cui salari sono inferiori a 50.000 o superiori a 100.000, puoi scrivere:

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

Result:

id_impiegato

name

salario

1

Sato

45000

4

Tanaka

120000

Questa query recupera i dipendenti i cui salari non rientrano tra 50.000 e 100.000. L’uso di NOT BETWEEN rende semplice applicare la condizione opposta.

8. Esempi Visivi di Query

Per rendere i risultati delle query più intuitivi, i diagrammi visivi possono essere utili. Ad esempio, puoi illustrare l’effetto di BETWEEN come segue:

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

Tali illustrazioni facilitano la comprensione di se un valore rientra nell’intervallo specificato nella query.

9. Riepilogo

L’operatore BETWEEN è uno strumento potente in MySQL per ricerche basate su intervalli. Può essere applicato a dati numerici, di data e di stringa, consentendo di scrivere query sia concise che efficienti. Tuttavia, è importante comprendere le sue caratteristiche — come l’inclusività dei valori di confine e l’importanza di un’indicizzazione corretta — per evitare risultati inattesi. Applicando queste conoscenze, puoi ottimizzare le prestazioni delle query ed estrarre solo i dati di cui hai bisogno in modo più efficace.

10. Riferimenti

Per ulteriori dettagli e casi d’uso avanzati, puoi fare riferimento alla documentazione ufficiale di MySQL o a libri specializzati su database. Inoltre, sperimentare direttamente con le query è uno dei modi migliori per approfondire la comprensione di come funziona l’operatore BETWEEN.