18/07/2011

Le wildcard dell'operatore LIKE

A cura di Gianluca Negrelli


Pagina 1 di 4

L'uso dell'operatore LIKE con il filtro WHERE in un'istruzione di selezione, permette di ricercare corrispondenze tra i record di una tabella, che rispondano ad un certo pattern di ricerca.

L'istruzione:

SELECT * FROM Prodotti WHERE Descrizione LIKE 'p%'

restituisce tutti i record prodotto la cui descrizione inizi per la lettera 'p'.

Vediamo in dettaglio quali siano le wildcard di LIKE.


Wildcard %

Il simbolo % (percentuale) indica un numero qualsiasi (anche zero) di caratteri alfanumerici. Può ricorrere più volte all'interno di un pattern di ricerca.

SELECT * FROM Prodotti WHERE Descrizione LIKE '%pc%asus%'

L'istruzione precedente cerca tra tutti i prodotti quelli che nella descrizione abbiano le parole 'pc' e 'asus' rigorosamente in questo ordine.


Wildcard _

Il carattere _ (underscore) rappresenta un placeholder valido per un solo carattere. Naturalmente l'underscore può essere ripetuto n volte in sostituzione di altrettanti caratteri.

SELECT * FROM Prodotti WHERE Descrizione LIKE '%2._Ghz%'

L'istruzione restituisce quei prodotti la cui descrizione contenga la parola '2._Ghz' dove al posto dell'underscore può trovare posto qualunque carattere.


Wildcard [ ]

All'interno delle parentesi quadre, l'operatore LIKE accetta range di caratteri, con una sintassi simile a quella in uso per le regular expression. L'istruzione precedente ci permetteva di cercare tutti i prodotti che avessero frequenza da '2.0Ghz' a '2.9Ghz'. Il filtro però avrebbe restituito, se esistenti, anche record di questo tipo: '2.AGhz' o '2. Ghz'.

Vediamo come utilizzare il nuovo pattern per limitare la ricerca.

SELECT * FROM Prodotti WHERE Descrizione LIKE '%2.[0-9]Ghz%' 

In questo modo il carattere mancante può solo essere un numero da 0 a 9. Attenzione, nello specificare gli intervalli del range, a rispettare l'ordine naturale dei caratteri imposto dalla collation corrente.

Un errore nell'ordine dell'intervallo dei caratteri porta ad ottenere un resultset di restituzione nullo così come accade nel caso seguente.

SELECT * FROM Prodotti WHERE Descrizione LIKE '%2.[9-0]Ghz%' 
Pagina 1 di 4

Commenti



Nessun commento disponibile.

Cobisi EmailVerify.NET is a Microsoft .NET software component that validates email addresses. valid email