SQL - Operatore LIKE
Ciao, appassionati di SQL! Oggi esploreremo uno degli operatori più utili e versatili in SQL: l'operatore LIKE. Come il tuo amico insegnante di scienze informatiche del quartiere, sono entusiasta di guidarti in questo viaggio. Allora, prenditi la tua bevanda preferita, mettiti comodo, e partiamo insieme in questa avventura SQL!
L'Operatore LIKE in SQL
L'operatore LIKE è uno strumento potente in SQL che ci permette di cercare specifici schemi nei nostri dati. È come avere una lente d'ingrandimento super-intelligente che può trovare esattamente ciò che stiamo cercando nel nostro database.
Immagina di voler trovare un libro in una grande biblioteca. Potresti non ricordare il titolo esatto, ma sai che contiene la parola "avventura". L'operatore LIKE è il tuo amico bibliotecario che può aiutarti a trovare tutti i libri con "avventura" nei loro titoli.
La sintassi di base dell'operatore LIKE è:
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
Ma cos'è esattamente questo "schema" di cui stiamo parlando? Beh, è qui che entra in gioco il nostro prossimo argomento...
Cosa sono i caratteri jolly?
I caratteri jolly sono caratteri speciali che possono rappresentare uno o più caratteri in uno schema di ricerca. Sono come i jolly in un mazzo di carte - possono sostituire qualsiasi altra carta. In SQL, utilizziamo i caratteri jolly con l'operatore LIKE per creare schemi di ricerca flessibili.
I due principali caratteri jolly utilizzati con LIKE sono:
- % (segno di percentuale)
- _ (sottolineatura)
Esploriamo ciascuno di questi in dettaglio.
Il Carattere Jolly '%'
Il carattere jolly '%' rappresenta zero, uno o più caratteri. È il carattere jolly più versatile e viene spesso utilizzato quando non sei sicuro della posizione esatta o della lunghezza dello schema che stai cercando.
Ecco alcuni esempi:
-- Trova tutti i clienti i cui nomi iniziano con 'A'
SELECT * FROM Customers WHERE CustomerName LIKE 'A%';
-- Trova tutti i prodotti che finiscono con 'phone'
SELECT * FROM Products WHERE ProductName LIKE '%phone';
-- Trova tutti gli ordini con 'book' ovunque nel nome del prodotto
SELECT * FROM Orders WHERE ProductName LIKE '%book%';
Nel primo esempio, stiamo cercando tutti i clienti i cui nomi iniziano con 'A', seguiti da qualsiasi numero di caratteri. Questo potrebbe corrispondere a nomi come "Alex", "Anna", o persino "A very long name".
Il secondo esempio cerca prodotti che finiscono con 'phone', che potrebbe corrispondere a "iPhone", "Smartphone", o "Headphone".
L'ultimo esempio trova qualsiasi ordine dove il nome del prodotto contiene 'book' ovunque, quindi potrebbe corrispondere a "Bookshelf", "Notebook", o "Book of Spells".
Il Carattere Jolly '_'
Il carattere jolly '_' rappresenta un singolo carattere. È come un segnaposto per esattamente un carattere nello schema.
Ecco alcuni esempi:
-- Trova tutti i clienti i cui nomi sono esattamente 4 caratteri lunghi
SELECT * FROM Customers WHERE CustomerName LIKE '____';
-- Trova tutti i prodotti che iniziano con 'A' e sono 5 caratteri lunghi
SELECT * FROM Products WHERE ProductName LIKE 'A____';
-- Trova tutti gli ordini dove il secondo carattere dell'ID ordine è '3'
SELECT * FROM Orders WHERE OrderID LIKE '_3%';
Nel primo esempio, stiamo cercando nomi di clienti che sono esattamente 4 caratteri lunghi. Questo potrebbe corrispondere a nomi come "John" o "Mary", ma non "Alexander" o "Bob".
Il secondo esempio cerca nomi di prodotti di 5 lettere che iniziano con 'A'. Potrebbe corrispondere a "Apple" o "Audio", ma non "Apricot" o "A4 paper".
L'ultimo esempio trova ordini dove il secondo carattere dell'ID ordine è '3'. Potrebbe corrispondere a ID ordine come "13456", "23789", o qualsiasi altra combinazione a patto che il secondo carattere sia '3'.
Operatore LIKE con OR
A volte, vogliamo cercare più schemi contemporaneamente. È qui che entra in gioco l'operatore OR. Possiamo combinarlo con LIKE per cercare diversi schemi nella stessa query.
Ecco un esempio:
-- Trova tutti i clienti i cui nomi iniziano con 'A' o finiscono con 's'
SELECT * FROM Customers
WHERE CustomerName LIKE 'A%' OR CustomerName LIKE '%s';
Questa query restituirà clienti come "Alice", "Andreas", "Boris", o "Charles". Corrisponde a nomi cheeither iniziano con 'A' o finiscono con 's' (o entrambi).
Operatore NOT con la condizione LIKE
E se vogliamo trovare tutto ciò che non corrisponde a un determinato schema? È qui che entra in gioco l'operatore NOT. Possiamo utilizzare NOT LIKE per escludere determinati schemi dalla nostra ricerca.
Ecco un esempio:
-- Trova tutti i prodotti che non iniziano con 'A'
SELECT * FROM Products
WHERE ProductName NOT LIKE 'A%';
Questa query restituirà tutti i prodotti tranne quelli che iniziano con 'A'. Quindi includerebbe "Banana", "Cherry", "Dell Laptop", ma non "Apple" o "Acer Monitor".
Caratteri di escape con l'operatore LIKE
A volte, potremmo voler cercare schemi che includono i caratteri jolly stessi. Ad esempio, cosa succede se vogliamo trovare prodotti con '%' nel loro nome? Utilizziamo il carattere di escape per dire a SQL che vogliamo trattare questi caratteri speciali come caratteri normali.
Il carattere di escape predefinito in SQL è la barra inclinata inversa (). Ecco come lo utilizziamo:
-- Trova prodotti con '%' nel loro nome
SELECT * FROM Products
WHERE ProductName LIKE '%\%%';
-- Trova prodotti con '_' nel loro nome
SELECT * FROM Products
WHERE ProductName LIKE '%\_%';
La prima query potrebbe corrispondere a nomi di prodotti come "50% off", "100% cotton", ecc. La seconda potrebbe corrispondere a nomi come "A_B", "C_D", ecc.
Usi dell'Operatore LIKE in SQL
L'operatore LIKE ha numerose applicazioni pratiche nella query dei database. Ecco una tabella che riassume alcuni usi comuni:
Caso d'uso | Query di esempio |
---|---|
Trovare corrispondenze parziali | SELECT * FROM Customers WHERE CustomerName LIKE '%son%'; |
Cercare specifici formati | SELECT * FROM Orders WHERE OrderID LIKE 'ORD_____'; |
Filtrare in base a caratteri iniziali/finali | SELECT * FROM Products WHERE ProductName LIKE 'A%' OR ProductName LIKE '%z'; |
Escludere determinati schemi | SELECT * FROM Employees WHERE EmployeeName NOT LIKE 'John%'; |
Cercare caratteri speciali | SELECT * FROM Products WHERE ProductName LIKE '%\%%'; |
Ricorda, l'operatore LIKE è case-insensibile per impostazione predefinita nella maggior parte delle implementazioni SQL. Questo significa che 'a%' matcherà 'Apple', 'apple', e 'APPLE'.
In conclusione, l'operatore LIKE è uno strumento potente nel tuo set di strumenti SQL. Permette di eseguire corrispondenze di stringhe flessibili e potenti, che sono fondamentali in molte attività di analisi e recupero dati. Pratica utilizzandolo con diversi caratteri jolly e combinazioni, e presto lo userai come un professionista!
Buon querying, futuri maestri SQL!
Credits: Image by storyset