Operatori LIKE, BETWEEN e IN
In questa lezione vedremo altri interessanti operatori supportati da MySQL, ovvero: LIKE, BETWEEN e IN.
L’operatore LIKE
Un operatore piuttosto “particolare” è LIKE il quale consente di effettuare dei “paragoni di somiglianza”. Supponiamo ad esempio di voler estrarre dalla nostra tabella “amici” tutti i record corrispondenti ad un nome che inizia per “Fabio”:
SELECT * FROM amici WHERE nome LIKE 'Fabio%';
Questa query restituirà nomi del tipo:
Fabio Fabio Rosa Fabio Antonietta
Se invece avessimo scritto la clasuola WHERE in questo modo:
WHERE nome LIKE '%Fabio';
Avremmo ottenuto in risa:
Fabio Anna Fabio
La differenza, come avrete già notato, è data dalla posizione del carattere percentuale (%) che sta ad indicare rispettivamente “qualsiasi carattere dopo” e “qualsiasi carattere prima”.
Ovviamente avremmo potuto utilizzare anche:
WHERE nome LIKE '%Fabio%';
Ottenendo in risa tutti i nomi che contengono “Fabio” all’inizio, in mezzo o alla fine della stringa.
L’operatore BETWEEN
L’operatore BETWEEN consente di effettuare comparazioni in MySQL verificando de un dato valore è compreso all’interno di un range di valori. La sua sintassi è:
<valore> BETWEEN <inizio> AND <fine>
Affinchè possa essere utilizzato correttamente, è necessario che i tre valori trattati dall’operatore (valore, inizio e fine) condividano il medesimo datatype. In caso di successo BETWEEN restituisce 1, in caso contrario 0.
L’operatore BETWEEN, normalmente, è utilizzato all’interno della clausola WHERE quale strumento di selezione dei record e tipicamente è utilizzato per operare su campi numerici oppure di tipo data.
Facciamo un esempio: supponiamo di voler cercare, all’interno di un ipotetico catalogo, i prodotti con prezzi compresi tra 50 e 100 Euro:
SELECT id, prodotto, prezzo FROM catalogo WHERE prezzo BETWEEN 50 AND 100;
Avremmo potuto ottenere il medesimo risultato anche utilizzando gli operatori >= e <= in questo modo:
SELECT id, prodotto, prezzo FROM catalogo WHERE prezzo >= 50 AND prezzo <= 100;
Un caso tipico di utilizzo dell’operatore BETWEEN è per effettuare ricerche all’interno di intervalli di date. Ad esempio:
SELECT id, cliente, spesa FROM ordini WHERE data_acquisto BETWEEN '2014-01-01 00:00:00' AND '2014-12-31 23:59:59';
E’ appena il caso di ricordare che qualora si desideri filtrare i record esterni ad un dato range sarà sufficiente anteporre NOT all’operatore BETWEEN.
L’operatore IN
L’operatore IN è utilizzato in MySQL per verificare se un dato valore è contenuto all’interno di una data lista di valori. La sua sintassi è la seguente:
<valore> IN (<valore1>,<valore2>,...)
Nella pratica l’operatore IN si rivela molto utile ed è frequentemente utilizzato. Vediamo un esempio: supponiamo di voler estrarre da un database di una ipotetica agenzia di viaggi l’elenco degli alberghi situati solo in determinati paesi:
SELECT * FROM alberghi WHERE nazione IN ('Italia','Australia','Germania');
Vale anche per IN l’osservazione fatta in merito all’operatore NOT: grazie al suo utilizzo, infatti, è possibile ottenere il risultato inverso cioè estrarre tutti i valori non compresi nella lista.