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');