L’operatore SQL OR ottimizza la tua ricerca nei record di dati per ottenere risultati che sod­di­sfi­no almeno una delle varie con­di­zio­ni definite. Inoltre, è possibile combinare SQL OR con altri operatori logici, come AND o NOT, per mi­glio­ra­re e ve­lo­ciz­za­re le tue query più complesse.

Che cos’è l’operatore SQL OR?

Gli operatori SQL AND, SQL NOT e SQL OR sono fra gli operatori SQL più im­por­tan­ti per la ricerca delle in­for­ma­zio­ni che ti in­te­res­sa­no. Mentre AND trova i dati che sod­di­sfa­no più con­di­zio­ni e NOT serve a definire criteri di esclu­sio­ne, SQL OR permette di espandere l’insieme dei risultati. In pratica, ti consente di definire più con­di­zio­ni di ricerca, i cui risultati devono sod­di­sfa­re almeno uno dei criteri. Il vantaggio è la pos­si­bi­li­tà di filtrare i risultati per­ti­nen­ti che non devono però sod­di­sfa­re ob­bli­ga­to­ria­men­te tutti i criteri.

L’operatore OR serve a formulare una con­di­zio­ne di ricerca ed è quindi uti­liz­za­to di solito insieme a SQL SELECT e SQL WHERE per ottenere record di dati, colonne e con­di­zio­ni di ricerca rilevanti. Per rendere ancora più precise le tue query, è possibile combinare OR anche con altri operatori logici come AND e NOT oppure con altri operatori di confronto come =.

SQL OR, AND e NOT in breve

Gli operatori SQL OR, AND e NOT si dif­fe­ren­zia­no nel modo seguente:

SQL OR SQL AND SQL NOT
Filtra i record di dati che sod­di­sfa­no almeno una delle con­di­zio­ni Considera solo i dati che sod­di­sfa­no tutte le con­di­zio­ni Ignora le in­for­ma­zio­ni che non sod­di­sfa­no una data con­di­zio­ne
Espande l’ambito di ricerca a più in­for­ma­zio­ni dif­fe­ren­ti Restringe la ricerca a una com­bi­na­zio­ne di con­di­zio­ni ap­pli­ca­bi­li Ignora le in­for­ma­zio­ni non per­ti­nen­ti in base a criteri di esclu­sio­ne
Consiglio

Se desideri entrare nel mondo del noto lin­guag­gio per database e pro­gram­ma­zio­ne SQL, puoi farlo ra­pi­da­men­te anche partendo da zero. Troverai le prin­ci­pa­li nozioni di base nella nostra in­tro­du­zio­ne a SQL mediante esempi.

La sintassi dell’operatore OR

Per le tue query di dati puoi definire due o più con­di­zio­ni di ricerca. La sintassi di OR è semplice e si presenta così:

SELECT  *
FROM  Tabella
WHERE  condizionericerca1  OR  condizionericerca2  OR …
sql

Sono di­spo­ni­bi­li i seguenti parametri:

  • SELECT: seleziona le colonne in­te­res­sa­te da cui ri­chia­ma­re i dati per mezzo delle effettive chiavi primarie ed esterne. Inserendo un asterisco * al posto del nome di una colonna è possibile eseguire la ricerca nell’intero record di dati.
  • FROM: definisce la tabella in cui eseguire la query di ricerca.
  • WHERE: utilizza operatori e ulteriori parametri per definire con­di­zio­ni di ricerca con cui re­strin­ge­re le query di dati.
  • OR: uti­liz­za­to come operatore logico in com­bi­na­zio­ne con SQL WHERE per definire i criteri di ricerca che devono essere sod­di­sfat­ti o non sod­di­sfat­ti dai risultati.

Per definire ul­te­rior­men­te la tua query di dati è di­spo­ni­bi­le una com­bi­na­zio­ne opzionale con AND o NOT.

SQL OR in com­bi­na­zio­ne con AND

In com­bi­na­zio­ne con AND è ne­ces­sa­rio che sia ri­spet­ta­to almeno uno dei criteri di ricerca di OR, mentre entrambe le con­di­zio­ni di ricerca OR devono sod­di­sfa­re la con­di­zio­ne AND.

SELECT  *
FROM  Tabella
WHERE  (condizionericerca1  OR  condizionericerca2)  AND  condizionericerca 3
sql

SQL OR in com­bi­na­zio­ne con SQLNOT`

In com­bi­na­zio­ne con NOT è possibile escludere i dati che non sod­di­sfa­no almeno uno dei criteri di ricerca definiti.

SELECT  *
FROM  Tabella
WHERE  NOT  (condizionericerca1  OR  condizionericerca2)
sql

Ap­pli­ca­zio­ni dell’operatore NOT

Con l’operatore OR è possibile cercare record di dati complessi in modo mirato in base a più criteri. Le possibili ap­pli­ca­zio­ni sono, ad esempio:

  • Fil­trag­gio di clienti, dati relativi a ordini o prodotti in base a criteri di ricerca combinati, come categorie di prodotto, ca­rat­te­ri­sti­che del prodotto o data di un ordine o reclamo
  • Ricerca di imprese in de­ter­mi­na­ti settori o in de­ter­mi­na­te regioni
  • Fil­trag­gio di tran­sa­zio­ni sospette o non valide in base a più con­di­zio­ni
  • Ricerca di in­for­ma­zio­ni sui di­pen­den­ti che fanno parte di un dato reparto o team
  • In­di­vi­dua­zio­ne di candidati che non offrono de­ter­mi­na­te qua­li­fi­che o privi di espe­rien­za pro­fes­sio­na­le

Esempi pratici per l’operatore SQL OR

Le pos­si­bi­li­tà di ap­pli­ca­zio­ne dell’operatore OR sono quasi il­li­mi­ta­te grazie alle com­bi­na­zio­ni con SQL WHERE, altri operatori SQL e ulteriori funzioni SQL. Nelle parti seguenti ti mostriamo tre pratici esempi di ap­pli­ca­zio­ne per com­pren­de­re meglio il fun­zio­na­men­to di OR.

Ricerca di ordini in base a de­ter­mi­na­te categorie

Il tuo obiettivo è cercare, in una tabella clienti, soltanto le persone che hanno ordinato i prodotti della categoria “Elet­tro­ni­ca”, della categoria “Bellezza” o di entrambe. I risultati devono contenere solo le in­for­ma­zio­ni rilevanti per almeno una delle con­di­zio­ni. Per definire le categorie, utilizza l’operatore di confronto =.

La sintassi si presenta così:

SELECT  *
FROM  Clienti
WHERE  (Categoria  =  'Elettronica'  OR  Categoria =  'Bellezza')
sql

Fil­trag­gio di candidati

In una tabella “Candidati” vogliamo trovare solo le persone che hanno un titolo di studio in “Elet­tro­tec­ni­ca” o in “In­for­ma­ti­ca” e che in entrambi i casi di­spon­go­no di almeno tre anni di espe­rien­za pro­fes­sio­na­le. A tal fine, utilizza OR e AND in com­bi­na­zio­ne. La ricerca si presenta così:

SELECT  *
FROM  Candidati
WHERE  (Titolo  =  'Elettrotecnica'  OR  Titolo  =  'Informatica')
AND (Esperienza  >=  3)
sql

Ricerca di dati per regione

Nella tabella “Clienti” stiamo cercando i clienti in Italia o in Svizzera. La sintassi è la seguente:

SELECT  *
FROM  Clienti
WHERE  Stato  =  'Italia'  OR   Stato  =  'Svizzera'
sql

Al­ter­na­ti­ve a SQL OR

L’operatore OR consente una ricerca facile e veloce uti­liz­zan­do più criteri di ricerca al­ter­na­ti­vi. Fun­zio­na­li­tà simili o identiche sono offerte da altri operatori SQL come:

  • CASE: l’istru­zio­ne SQL CASE ti permette di uti­liz­za­re le clausole WHERE, THEN ed ELSE per ve­ri­fi­ca­re anche le con­di­zio­ni di ricerca e definire analisi complesse per insiemi risultato per­ti­nen­ti. La va­lu­ta­zio­ne ha luogo in base al metodo “IF-THEN-ELSE” da una con­di­zio­ne all’altra e dal basso verso l’alto. L’analisi si ferma quando una delle con­di­zio­ni diventa vera.
  • IN: con l’operatore IN in com­bi­na­zio­ne con la clausola WHERE è possibile eseguire ricerche nei record di dati definendo valori o sequenze di caratteri per mezzo di IN e cercando le cor­ri­spon­den­ze in una tabella o in una colonna.
  • EXISTS: con l’operatore SQL EXISTS è possibile con­trol­la­re in un’intera tabella se almeno un record di dati se­le­zio­na­to di un’altra tabella cor­ri­spon­de alla prima tabella. In presenza di almeno una cor­ri­spon­den­za, il risultato diventa parte della tabella di de­sti­na­zio­ne. L’operatore è però utile soltanto se le due tabelle sono in relazione fra loro.
Vai al menu prin­ci­pa­le