SQL - Ricerca con filtro


Alla base dei database

In SQL, la parola chiave WHERE permette di filtrare in una tabella sia in base a valori testuali che numerici. Ci sono alcuni operatori di confronto che si possono utilizzare:

1.        = uguale

2.        <> diverso

3.        < minore di

4.        > maggiore di

5.        <= minore o uguale a

6.        >= maggiore o uguale a

Esempio con valori testuali:

SELECT *
FROM tabella
WHERE nome_variabile = 'una stringa presente';

Esempio con valori numerici:

SELECT *
FROM tabella
WHERE nome_variabile > 10;

 

Spesso si desidera selezionare i dati in base a più condizioni. Si può costruire le richieste WHERE combinando condizioni multiple con AND, le condizioni possono essere riferite alla stessa variabile:

SELECT *
FROM tabella
WHERE nome_variabile > 10 AND < 20;

Oppure a variabili differenti:

SELECT *
FROM tabella
WHERE nome_variabile1 > 10 
AND nome_variabile2 = 'una stringa presente';

 

Può capitare che non tutte le condizioni debbano essere rispettate rigorosamente insieme ma che basta che ne sia rispettata una o l'altra. In questo caso si utilizza OR:

SELECT *
FROM tabella
WHERE nome_variabile1 > 10 
OR nome_variabile2 = 'una stringa presente';

 

Un esempio un pelo più complicato (che è più facile da scrivere come macro che spiegare in termini così generici) è quando vogliamo ad esempio che due condizioni debbano essere rispettate oppure ci basta che ne sia rispettata un'altra:

SELECT *
FROM tabella
WHERE (nome_variabile1 > 10 AND < 20) 
OR nome_variabile2 = 'una stringa presente';

La verifica di intervalli è molto comune in SQL, la funzione BETWEEN è utile per filtrare i valori all'interno di un intervallo specificato.

SELECT *
FROM tabella
WHERE nome_variabile 
BETWEEN 10 AND 20;

Questa query è equivalente a quella riscritta qui sotto del primo esempio di questa sezione:

SELECT *
FROM tabella
WHERE nome_variabile > 10 AND < 20;

Come visto, WHERE è molto utile per filtrare i risultati. Tuttavia, se si vuole filtrare in base a molte condizioni, WHERE può diventare ingombrante. Per esempio, ipotiziamo di avere una variabile City dove sono presenti diverse città, si vuole selezionare solo i valori relativi a 'London', 'Milan' e 'Berlin' potremmo fare:

SELECT *
FROM tabella
WHERE City 
OR City = 'Milan'
OR City = 'Berlin'
OR City = 'London';

Ma risulta più sensato a livello di programmazione fare:

SELECT *
FROM tabella
WHERE City IN ('London', 'Milan', 'Berlin');