L'operatore LIKE in SQL
Nel linguaggio SQL l'operatore di confronto LIKE mi permette di analizzare il contenuto parziale di una stringa. Si usa nella condizione WHERE delle interrogazioni SELECT.
L'operatore LIKE utilizza due caratteri speciali da inserire dentro le stringhe:
- Percentuale (%)
Questo simbolo sostituisce un insieme di caratteri in una stringa.Esempio. Con l'operatore di confronto LIKE la stringa "Ro%a" seleziona tutte le parole di qualsiasi lunghezza che iniziano per "Ro" e finiscono in "a". Ad esempio, Roma, Romagna, Romania, ecc.
- Trattino sottolineato (_)
Questo simbolo sostituisce un carattere in una stringa.Esempio. Con l'operatore di confronto LIKE la stringa "Ro_a" seleziona le parole di 4 lettere che iniziano per "Ro" e terminano in "a". Ad esempio, Roma, Rosa, ecc.
La sintassi
La sintassi da utilizzare per scrivere una SELECT / LIKE è la seguente:
SELECT [campi]
FROM [tavola]
WHERE [campo LIKE stringa]
I caratteri speciali % e _ devono essere inseriti dentro la stringa di ricerca.
Vediamo ora cosa cambia rispetto a una normale SELECT/WHERE.
Nel caso dell'operatore LIKE chiediamo al sistema SQL di ricercare tutti quei record in cui un determinato campo è simile alla parola ricercata.
Esempio
Riprendiamo il database degli alunni e cerchiamo soltanto quelli che hanno un nome simile a "Anna".
Scriveremo la query nel seguente modo:
SELECT *
FROM alunni
WHERE nome LIKE '%anna%' ;
Il risultato dell'interrogazione sarà una lista di alunni con nome simile e comprensivo della parola 'anna'. Ad esempio: Annalaura, Anna, Marianna...
Un esempio pratico
Ad esempio se volessimo selezionare tutti gli alunni con un nome che inizi per Anna, scriveremo:
SELECT *
FROM alunni
WHERE nome LIKE 'Anna%' ;
Se invece volessimo selezionare soltanto gli alunni con nome 'Mario' o 'Maria' potremo scrivere nel seguente modo:
SELECT *
FROM alunni
WHERE nome LIKE 'Mari_' ;
I caratteri jolly possono anche essere utilizzati in modo combinato nella stessa ricerca.
La specifica ESCAPE
Può capitare il caso in cui il carattere underscore sia compreso nei dati della tabella.
Ad esempio, ipotizziamo che alcuni nomi siano scritti nel seguente modo "Anna_Laura", "Anna_Maria" ecc.
In questi casi è necessario utilizzare nell'interrogazione la specifica ESCAPE, introdotta dall'ANSI per fare in modo che l'SQL interpreti il carattere sia come escape sia come caratttere effettivo e non come carattere jolly.
SELECT *
FROM alunni
WHERE nome LIKE 'Anna_M%' ESCAPE '';
E così va