- Filtrare dati e limitare l'azione di operazioni di modifica -
 
COSA SERVE PER QUESTO TUTORIAL
Chiedi sul FORUM | Glossario Conoscenza dell'HTML - un server che supporti la tecnologia ASP .NET - facoltativamente un editor provvisto di intellisense (es. Macromedia Dreamweaver)
La clausola SQL WHERE per filtrare il campo d'azione di una query

WHERE
Un semplice esempio per spiegare come limitare il campo d'azione di una query ad un database Access.

In molte query (come SELECT, DELETE e UPDATE) è spesso utile se non indispensabile l'utilizzo della parola chiave WHERE il cui obiettivo è quello di limitare la query solo a certe righe.
1) Iniziamo con un semplice esempio: se vogliamo cancellare da una tabella solo le righe che hanno una colonna uguale a 2 sarà sufficiente utilizzare la seguente sintassi:

DELETE FROM NomeTabella WHERE NomeColonna = 2
2) Gli operatori matematici disponibili sono i seguenti:
=: uguale;
<: minore;
>: maggiore;
<>: diverso (maggiore o minore);
<=: minore o uguale;
>=: maggiore o uguale.
3) Nell'utilizzare WHERE si deve però prestare attenzione al fatto che, ad esempio, se una colonna contiene testo non sarà possibile utilizzare questa sintassi:
DELETE FROM NomeTabella WHERE NomeColonna = Testo
ma andrà racchiuso tra apici (o apostrofo):
DELETE FROM NomeTabella WHERE NomeColonna = 'Testo'
4) Stessa cosa se stiamo trattando una data a parte che al posto degli apici vanno utilizzati i cancelletti (#):
DELETE FROM NomeTabella WHERE NomeColonna = #25/12/1980#
5) Un ulteriore filtro è l'operatore LIKE che supporta i caratteri Jolly:
?: un singolo carattere;
*: una quantità indeterminata di caratteri (anche nessuno);
#: una singola cifra;
[elenco caratteri]: un qualunque dei singoli caratteri compresi nelle parentesi quadre (i caratteri vanno separati attraverso un meno);
[!elenco caratteri]: un qualunque singolo carattere tranne quelli compresi tra le parentesi quadre.
6) Questo esempio eliminerà sia Paolo che Paola:
DELETE FROM NomeTabella WHERE nomecolonna1 LIKE 'Paol?'
7) Elimina Paolo e Paolone:
DELETE FROM NomeTabella WHERE nomecolonna1 LIKE 'Paolo*'
8) Elimina Paolo1, Paolo2 ma non Paolo10:
DELETE FROM NomeTabella WHERE nomecolonna1 LIKE 'Paolo#'
9) Elimina Cartella e Cartello ma non Cartelle e Cartelli:
DELETE FROM NomeTabella WHERE nomecolonna1 LIKE 'Cartell[a-o]'
10) Elimina Cartelle e Cartelli ma non Cartella e Cartelle:
DELETE FROM NomeTabella WHERE nomecolonna1 LIKE 'Cartell[!a-o]'
11) È possibile utilizzare più criteri assieme attraverso gli operatori logici:
AND: le due condizioni implicate devono essere entrambe vere perchè la riga venga eliminata;
OR: almeno una delle due condizioni deve essere vera perchè la riga venga eliminata;
XOR: o una o l'altra condizione implicata deve essere vera (non tutte e due) la riga venga eliminata;
NOT: restituisce la riga solo se la condizione implicata non è vera;

SELECT * FROM nometabella1 WHERE nomecolonna1="Valore1" AND nomecolonna2="Valore2"
SELECT * FROM nometabella1 WHERE nomecolonna1="Valore1" OR nomecolonna2="Valore2"
SELECT * FROM nometabella1 WHERE nomecolonna1="Valore1" XOR nomecolonna2="Valore2"
SELECT * FROM nometabella1 WHERE NOT nomecolonna1="Valore1"

Per esempi di codice riferirsi ai documenti sulle query SELECT, UPDATE e DELETE.

 

<< INDIETROby VeNoM00