Torna all'elenco degli articoli Articoli
Tempo di lettura: 4 minuti

Come utilizzare un carattere jolly SQL

Il carattere jolly SQL consente di filtrare i dati che corrispondono a determinati modelli in SQL. I caratteri jolly SQL vengono utilizzati con l'operatore LIKE nella clausola WHERE di una query per filtrare i dati. In questo articolo per principianti, vedremo tutto quello che c'è da sapere sui caratteri jolly SQL di base.

Se vi piace giocare a carte, sapete che i caratteri jolly possono sostituire qualsiasi altra carta del vostro mazzo. Allo stesso modo, i caratteri jolly SQL possono sostituire uno o più caratteri.

Per iniziare con i caratteri jolly SQL, esaminiamo una semplice tabella customers per il nostro negozio di animali:

Carattere jolly SQL con l'operatore LIKE

Immaginate di assistere a un cliente che lascia un negozio di animali senza pagare il suo ordine. Sono cose che succedono: si è semplicemente dimenticato. Sapete che il venditore del negozio di animali ha un database di clienti e gli chiedete se conosce il nome del cliente per poterne estrarre l'indirizzo e contattarlo. Ma il venditore non è sicuro del nome del cliente. Sa che il nome del cliente termina con due lettere, ose che era corto, di sole tre lettere. Forse era qualcosa come Tos, Los, Kos ecc. Utilizzando la potenza di un carattere jolly SQL, può gestire una lettera ambigua nel suo database. Per rappresentare un carattere, utilizziamo il carattere jolly SQL underscore. La nostra query SELECT si presenta così:

SELECT * FROM customers WHERE surname LIKE ‘_os’;

La nostra query ora restituisce tutti i cognomi e possiamo evitare di scrivere l'istruzione per ogni combinazione di parole:

SELECT * FROM customers WHERE surname IN (‘Kos’,’Tos’,’Los’);

Si noti che l'elenco di cognomi sopra riportato non è affatto esaustivo, perché il carattere jolly underscore sostituisce qualsiasi carattere, anche se non è una lettera!

Attenzione: Uso dei caratteri jolly SQL senza l'operatore LIKE

I caratteri jolly SQL funzionano solo con l'operatore LIKE. Se si inserisce un carattere jolly all'interno di una stringa normale che non è un argomento dell'operatore LIKE, SQL lo tratterà come un carattere letterale presente nella stringa. Ad esempio, si consideri questa query alternativa che non utilizza l'operatore LIKE:

SELECT * FROM customers WHERE surname = ‘_os’;

Questa query cercherebbe tutti i cognomi che sono letteralmente uguali a '_os', e potete scommettere che non ci sono record di questo tipo nella nostra tabella. Questo è un tipico errore da principianti, quindi fate attenzione quando usate i caratteri jolly SQL.

Invertire i filtri jolly SQL

Per ottenere l'inverso di un filtro jolly SQL, ad esempio per trovare tutti i clienti i cui cognomi non sono Los, Tos, Kos e così via, è sufficiente applicare una negazione, NOT, all'operatore LIKE:

SELECT * FROM customers WHERE surname NOT LIKE ‘_os’;

Uso dei caratteri jolly SQL per rappresentare un insieme di caratteri

Il carattere jolly underscore non è l'unico disponibile in SQL. Un carattere jolly SQL più comunemente usato è il segno di percentuale (%), che viene utilizzato per rappresentare uno o più caratteri. Se vogliamo elencare tutti i clienti che vivono in città tedesche che finiscono per "burg", scriviamo la seguente query:

SELECT * FROM customers WHERE city LIKE ‘%burg’;

Questa query restituirà tutti i record dei clienti la cui città di residenza è Amburgo, Augsburg, Oldenburg, Duisburg e altre.

Così come abbiamo annullato il carattere jolly SQL underscore, possiamo anche annullare il carattere jolly SQL percentuale. Quindi, se vogliamo estrarre i record dei clienti la cui città di residenza non finisce per "burg", scriviamo:

SELECT * FROM customers WHERE city NOT LIKE ‘%burg’;

Nota: se possibile, evitare di utilizzare il carattere jolly percentuale all'inizio di una stringa con l'operatore LIKE. Questa costruzione è molto costosa, poiché il database deve valutare ogni combinazione di stringhe che corrispondono al pattern finale. L'uso di % dopo alcuni caratteri è meno costoso in termini di risorse informatiche, poiché il database conosce già lo spazio delle stringhe che deve valutare.

Combinazione di caratteri jolly nelle dichiarazioni LIKE

È importante notare che è possibile combinare i caratteri jolly SQL. Se si desidera cercare tutti i clienti la cui città di residenza inizia con una 'W', termina con 'burg' e ha almeno una lettera tra la 'W' e 'burg', si può scrivere:

SELECT * FROM customers WHERE city NOT LIKE ‘W_%burg’;

Scatenatevi con i caratteri jolly di SQL

In questo articolo abbiamo visto come utilizzare i caratteri jolly SQL per filtrare le tabelle. Qui abbiamo trattato solo le basi. Per saperne di più sui caratteri jolly SQL, vi consiglio di imparare le espressioni regolari. Ma fate attenzione, perché c'è un detto in informatica: Se si cerca di risolvere un problema usando le espressioni regolari, si finisce per avere due problemi. Le espressioni regolari sono un argomento avanzato, quindi è necessario fare un po' di esperienza prima di provare a padroneggiarle. Date un'occhiata a questo piccola lezione di LearnSQL.it sui caratteri jolly per acquisire maggiore esperienza.