operatore LIKE in SQL
Nelle interrogazioni SELECT merita un capitolo a parte la condizione LIKE. Si tratta di un operatore logico utilizzabile nella condizione WHERE, particolarmente utile per effettuare le ricerche su dati parziali. La sintassi da utilizzare è la seguente:
SELECT [campi]
FROM [tavola]
WHERE [campo LIKE 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. Ad esempio, riprendiamo il database degli alunni e cerchiamo soltanto quelli che hanno un nome simile a "Anna". Scriveremo 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...
L'operatore LIKE utilizza due tipi di caratteri jolly per verificare le uguaglianze parziali. I due caratteri sono il simbolo percento '%' e l'underscore '_'. Il primo carattere jolly sostituisce un insieme di caratteri, il secondo si limita a sostituirne uno solo .
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.
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 '';
ecomatrix
scrivi al sito
ecomatrix@gmail.com