Creare non uguale Access significa filtrare una query per escludere un valore specifico oppure selezionare tutti i record che non soddisfano una determinata condizione. In Microsoft Access l’operatore standard per non uguale è <>. Puoi usarlo con testo, numeri, date e altri tipi confrontabili, ma devi gestire correttamente i valori Null: un campo Null non è uguale e non è nemmeno diverso da un valore nel senso booleano tradizionale, quindi per i Null servono Is Null e Is Not Null.
Questa guida mostra l’uso del criterio in Visualizzazione Struttura e in SQL, le differenze tra <> e Not, la gestione dei Null, gli esempi con date, testo e numeri, l’uso con AND e OR, le query parametro, le prestazioni e i casi in cui il non uguale produce risultati inattesi. Gli esempi sono validi per Access per Microsoft 365 e Access 2024 su Windows e per query già progettate eseguite in Access Runtime. Per le basi sui criteri consulta come usare i criteri nelle query Access. Tutte le guide sono nella categoria Guide Access.
Cosa significa non uguale in una query
Un criterio di uguaglianza seleziona i record il cui valore corrisponde esattamente al riferimento. Il non uguale fa l’opposto per i valori effettivamente presenti. Se il campo Stato contiene Attivo, Sospeso e Chiuso, il criterio <>'Chiuso' restituisce Attivo e Sospeso. I record in cui Stato è Null richiedono invece una gestione separata.
Sintassi di base in SQL Access
SELECT * FROM Clienti WHERE Stato <> 'Chiuso';
La clausola WHERE valuta il campo Stato per ogni record e mantiene quelli che hanno un valore diverso da Chiuso. In Visualizzazione Struttura inserisci nella riga Criteri del campo Stato <>'Chiuso' o il valore equivalente che Access normalizza secondo la sintassi dell’interfaccia.
Non uguale con valori numerici
Per escludere un numero non servono delimitatori testuali:
SELECT * FROM Prodotti WHERE CategoriaID <> 5;
La query seleziona i prodotti il cui CategoriaID è diverso da 5. Se CategoriaID può essere Null, quei record non vengono automaticamente inclusi. Se vuoi includerli devi scrivere una condizione esplicita.
Non uguale con date
Con un vero campo Data/Ora puoi escludere una data usando un letterale delimitato da #:
WHERE DataOrdine <> #08/31/2026#
Se DataOrdine contiene anche l’orario, questo confronto esclude soltanto l’istante corrispondente alla mezzanotte del 31 agosto, non l’intera giornata. Per escludere una giornata completa è più corretto usare un intervallo complementare:
WHERE DataOrdine < #08/31/2026# Or DataOrdine >= #09/01/2026#
Per approfondire i confini temporali consulta come creare una query con intervallo di date.
Perché Null cambia il risultato
Null rappresenta un valore sconosciuto o mancante. Un confronto come Stato <> 'Chiuso' non diventa automaticamente True quando Stato è Null. Il risultato logico è Null, quindi il record non supera il filtro. Questo comportamento è fondamentale da conoscere: molti utenti si aspettano che tutti i record non Chiuso includano anche quelli senza stato, ma Access distingue tra diverso e sconosciuto.
Includere anche i Null
Se la regola aziendale considera un valore mancante come non Chiuso, scrivi:
WHERE Stato <> 'Chiuso' Or Stato Is Null
Ora i record senza stato vengono inclusi esplicitamente. Prima di farlo verifica che sia realmente corretto dal punto di vista dei dati: Null potrebbe indicare un errore che sarebbe meglio correggere invece di assorbirlo nel filtro.
Escludere i Null
Se vuoi soltanto valori presenti e diversi da Chiuso, puoi rendere la condizione esplicita:
WHERE Stato Is Not Null And Stato <> 'Chiuso'
Dal punto di vista dei risultati il secondo confronto già non seleziona Null, ma l’espressione esplicita migliora leggibilità quando la query è complessa.
Differenza tra <> e Not
<> confronta due valori e significa diverso da. Not nega un’espressione logica. Per esempio Not (Stato='Chiuso') esprime concettualmente la negazione dell’uguaglianza. Tuttavia, anche qui i Null richiedono attenzione. Per criteri semplici il simbolo <> è più diretto; Not è utile quando devi negare un gruppo di condizioni o operatori come Between, In e Like.
Not Between
Microsoft documenta Not Between come modo per selezionare valori esterni a un intervallo:
WHERE Prezzo Not Between 10 And 100
Il risultato contiene valori inferiori a 10 o superiori a 100. I valori Null restano un caso separato. Con le date, Not Between può essere utile per trovare record fuori periodo, ma fai attenzione alla componente oraria e agli estremi inclusivi di Between.
Not In
Per escludere più valori puoi usare Not In invece di una lunga sequenza di non uguale:
WHERE Stato Not In ('Chiuso','Annullato','Archiviato')
È più leggibile di tre confronti collegati da AND. Se la lista diventa lunga e cambia spesso, valuta una tabella di configurazione anziché inserire valori fissi nella query.
Not Like
Per escludere un pattern puoi usare Not Like:
WHERE Codice Not Like 'TEST*'
In un database Access ANSI-89 esclude i codici che iniziano con TEST. Se il database usa ANSI-92, il jolly cambia. Consulta come usare caratteri jolly nelle query Access.
Non uguale con più condizioni AND
Supponiamo di voler mostrare ordini che non siano annullati e abbiano totale maggiore di zero:
WHERE Stato <> 'Annullato' And Totale > 0
Entrambe le condizioni devono essere vere. Se Stato è Null, il record non passa a meno che tu lo gestisca esplicitamente.
Non uguale con OR
OR richiede particolare attenzione. La condizione Stato <> 'Chiuso' Or Stato <> 'Annullato' è quasi sempre vera per qualunque valore non Null, perché un singolo stato non può essere contemporaneamente uguale a entrambi. Se vuoi escludere sia Chiuso sia Annullato devi usare AND tra i due non uguale oppure, meglio, Not In.
Errore logico classico
Questa è una delle trappole più comuni: per escludere A e B devi richiedere Campo <> A And Campo <> B. Con OR basta che uno dei due confronti sia vero e quindi A soddisfa il confronto diverso da B, mentre B soddisfa il confronto diverso da A. Il filtro finisce per includere proprio i valori che volevi escludere.
Non uguale in Visualizzazione Struttura
Apri la query, individua il campo e inserisci il criterio nella riga Criteri. Se aggiungi un secondo non uguale sullo stesso campo e vuoi che entrambi valgano, mantienili nella stessa espressione logica o usa Not In. Le righe Oppure della griglia rappresentano OR, non AND.
Query parametro con valore da escludere
Puoi chiedere all’utente quale valore escludere:
WHERE Categoria <> [Inserisci categoria da escludere]
È opportuno dichiarare il parametro con il tipo corretto. Se l’utente deve scegliere tra categorie note, una maschera con casella combinata è più sicura della finestra parametro.
Controllo da maschera
Una maschera permette di selezionare il valore da escludere e avviare la query con un pulsante. In Access Runtime è la soluzione migliore perché l’utente finale lavora con l’interfaccia dell’applicazione e non con la struttura della query.
Non uguale e stringa vuota
Null e stringa zero-length sono diversi. Un campo di testo può contenere Null oppure una stringa di lunghezza zero se la proprietà e la logica applicativa lo consentono. Se vuoi trovare testi realmente valorizzati potresti dover distinguere entrambe le situazioni. Non usare un unico confronto aspettandoti che copra automaticamente tutti i casi.
Non uguale e spazi
Un valore contenente spazi può non essere uguale a una stringa apparentemente identica. Se i dati arrivano da importazioni, controlla eventuali spazi iniziali e finali. Trim può aiutare nel debug, ma è meglio normalizzare il dato all’origine.
Non uguale e maiuscole/minuscole
I confronti testuali di Access seguono le regole di confronto del motore e non vanno trattati come confronto binario case-sensitive per impostazione predefinita. Se il requisito richiede distinzione rigorosa tra maiuscole e minuscole, progetta e testa una soluzione specifica, soprattutto con origini collegate esterne.
Non uguale in query di aggiornamento
Puoi usare <> come criterio in una query di aggiornamento, ma prima esegui una query di selezione identica. Verifica quanti record saranno modificati e fai un backup. Se il campo contiene Null, controlla se devono essere aggiornati oppure no.
Non uguale in query di eliminazione
Un criterio di esclusione in una Delete può selezionare una quantità enorme di dati. Se scrivi elimina tutto ciò che è diverso da X, stai potenzialmente eliminando quasi l’intera tabella. Crea prima la selezione, controlla manualmente e fai backup.
Prestazioni e indice
Un criterio di non uguaglianza spesso è meno selettivo di un’uguaglianza, perché può restituire la maggior parte dei record. Anche con un indice, il guadagno dipende dalla distribuzione dei dati. Se quasi tutti i record sono diversi dal valore escluso, la query deve comunque elaborare molte righe.
Ottimizzare il requisito
Se conosci i pochi valori ammessi, può essere più efficiente e più chiaro usare In con l’elenco positivo invece di escludere una lunga lista. Per esempio, se Stato può avere dieci valori ma il report vuole soltanto Attivo e Sospeso, In('Attivo','Sospeso') comunica meglio l’intento rispetto a otto esclusioni.
Non uguale nei join
Microsoft documenta anche join basati su disuguaglianza. Un join con <> può produrre quasi tante righe quanto un prodotto cartesiano ed è difficile da interpretare. Inoltre i join non equi non sono gestiti normalmente nella Visualizzazione Struttura e richiedono SQL. Non usare un unequal join se il tuo obiettivo è semplicemente filtrare un campo: il criterio WHERE è molto più appropriato.
Access per Microsoft 365, Access 2024 e Runtime
L’operatore <>, Not, In, Between e i criteri descritti fanno parte delle funzionalità desktop correnti di Access per Windows. Access Runtime esegue query salvate, ma non offre l’ambiente completo di progettazione. Non esiste una versione desktop nativa di Access per macOS equivalente a quella Windows.
Troubleshooting: mancano i record Null
È normale. Aggiungi Or Campo Is Null solo se la regola richiede che i Null siano considerati tra i valori da includere.
Troubleshooting: vengono inclusi valori che volevo escludere
Controlla se hai collegato più non uguale con OR. Per escludere A e B usa AND oppure Not In.
Troubleshooting: una data non viene esclusa tutta
Il campo contiene probabilmente l’orario. Escludi l’intera giornata con un intervallo complementare, non con un singolo <> alla mezzanotte.
Troubleshooting: query molto ampia
Il non uguale è spesso poco selettivo. Valuta se puoi esprimere il requisito con un elenco positivo In o con una categoria più specifica.
Esempio: clienti non disattivati
Se Stato è obbligatorio, Stato <> 'Disattivato' è sufficiente. Se può essere Null, decidi se i Null devono comparire. La query deve riflettere una regola aziendale, non soltanto una comodità sintattica.
Esempio: prodotti non appartenenti a una categoria
CategoriaID <> 5 esclude la categoria 5. Se il prodotto senza categoria deve apparire, aggiungi Is Null. Se invece la mancanza di categoria è un errore, crea un report separato per correggere i dati.
Esempio: ordini non annullati
Una query operativa può combinare Stato diverso da Annullato, DataOrdine nel mese corrente e Totale maggiore di zero. Usa parentesi se aggiungi alternative. Testa la query con record che rappresentano tutti gli stati possibili.
Checklist
Definisci il valore da escludere; verifica il tipo del campo; controlla se può essere Null; scegli tra <>, Not In, Not Between o Not Like; usa AND correttamente; prova casi positivi e negativi; se è una query di azione esegui prima la selezione; misura l’ampiezza del risultato; documenta le regole sui Null; salva con un nome descrittivo.
FAQ
Qual è il simbolo non uguale in Access?
<>.
Perché <> non include i Null?
Perché Null rappresenta un valore sconosciuto. Usa Is Null o Is Not Null per gestirlo esplicitamente.
Come escludo due valori?
Usa due confronti collegati da AND oppure, più semplicemente, Not In.
Posso usare Not Like?
Sì, per escludere testi che rispettano un pattern.
Posso usare Not Between?
Sì, per selezionare valori esterni a un intervallo.
Come escludo un’intera giornata con timestamp?
Usa un criterio prima dell’inizio della giornata OR dopo o uguale all’inizio del giorno successivo.
Funziona in Access Runtime?
Sì, nelle query salvate.
Fonti Microsoft
Per approfondire la logica delle disuguaglianze e dei join consulta Join tables and queries, oltre alla documentazione Microsoft sugli operatori di confronto, Between…And Operator e In Operator.
Conclusione
Per creare non uguale Access usa <> quando vuoi escludere un singolo valore, ma non dimenticare che Null richiede una condizione separata. Per più esclusioni preferisci Not In, per intervalli Not Between e per pattern Not Like. La sintassi è semplice; la parte importante è progettare correttamente la logica, soprattutto con AND, OR, Null e campi Data/Ora.