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 "Maria":
SELECT * FROM amici WHERE nome LIKE 'Maria%';
Questa query restituirà nomi del tipo:
Maria
Maria Rosa
Maria Antonietta
Se invece avessimo scritto la clasuola WHERE in questo modo:
WHERE nome LIKE '%Maria';
Avremmo ottenuto in risposta:
Maria
Anna Maria
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 '%Maria%';
Ottenendo in risposta tutti i nomi che contengono "Maria" 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 hotel situati solo in determinati paesi:
SELECT *
FROM hotel
WHERE nazione IN ('Italia','Francia','USA');
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.