[NOT] LIKE (Entity SQL)
Determina se un oggetto String di caratteri specifico corrisponde a un criterio specificato.
[NOT] LIKE ( expression )
Argomenti
- match
Espressione Entity SQL che restituisce un oggetto String.
- pattern
Criterio da confrontare con l'oggetto String specificato.
- escape
Carattere di escape.
- NOT
Specifica la negazione del risultato di LIKE.
Valore restituito
true se string corrisponde al criterio; in caso contrario, false.
Osservazioni
Le espressioni Entity SQL che utilizzano l'operatore LIKE vengono valutate in modo analogo alle espressioni in cui viene utilizzata l'uguaglianza come criterio di filtro. Le espressioni Entity SQL che utilizzano l'operatore LIKE possono tuttavia includere sia valori letterali che caratteri jolly.
Nella tabella seguente viene descritta la sintassi del modello string.
Carattere jolly | Descrizione | Esempio |
---|---|---|
% |
Qualsiasi string di zero o più caratteri. |
|
_ (carattere di sottolineatura) |
Qualsiasi carattere singolo. |
|
[ ] |
Qualsiasi carattere singolo compreso nell'intervallo ([a-f]) o nel set ([abcdef]) specificato. |
|
[^] |
Qualsiasi carattere singolo non compreso nell'intervallo ([^a-f]) o nel set ([^abcdef]) specificato. |
|
Nota: |
---|
La clausola ESCAPE e l'operatore LIKE Entity SQL non possono essere applicati ai valori System.DateTime o System.Guid. |
LIKE supporta i criteri di ricerca ASCII e Unicode. Quando tutti i parametri sono caratteri ASCII, viene eseguita una ricerca ASCII. Se uno o più argomenti sono di tipo Unicode, tutti gli argomenti vengono convertiti in Unicode e viene eseguita una ricerca Unicode. Quando si utilizza il formato Unicode con LIKE, gli spazi finali sono significativi, a differenza del formato non Unicode, in cui gli spazi finali non sono significativi. La sintassi della stringa criterio di Entity SQL corrisponde a quella di Transact-SQL .
Un criterio può includere caratteri normali e caratteri jolly. Durante la ricerca i caratteri normali devono corrispondere esattamente ai caratteri specificati nell'oggetto string di caratteri. I caratteri jolly possono tuttavia corrispondere a frammenti arbitrari della stringa di caratteri. Quando viene utilizzato con i caratteri jolly, l'operatore LIKE è più flessibile rispetto agli operatori di confronto tra stringhe = e !=.
Nota: |
---|
Se la destinazione è costituita da un provider specifico, è possibile utilizzare estensioni specifiche del provider.Tali costrutti possono tuttavia essere trattati in modo diverso, ad esempio da altri provider.SqlServer supporta ad esempio i modelli [first-last] e [^first-last], dove il primo consente di trovare una corrispondenza esatta di un carattere compreso tra il primo e l'ultimo, mentre il secondo consente di trovare una corrispondenza esatta di un carattere non compreso tra il primo e l'ultimo. |
Escape
Utilizzando la clausola ESCAPE, è possibile cercare stringhe di caratteri che includono uno o più dei caratteri jolly speciali descritti nella tabella nella sezione precedente. Si presupponga, ad esempio, che diversi documenti includano il valore letterale "100%" nel titolo e che si desideri cercare tutti i documenti di questo tipo. Poiché il carattere di percentuale (%) è un carattere jolly, è necessario utilizzare caratteri di escape per questo carattere utilizzando la clausola ESCAPE Entity SQL per eseguire correttamente la ricerca. Di seguito viene illustrato un esempio di questo filtro.
"title like '%100! %%' escape '!'"
In questa espressione di ricerca il carattere jolly di percentuale (%) immediatamente successivo al carattere punto esclamativo (!) viene trattato come valore letterale anziché come carattere jolly. È possibile utilizzare come carattere di escape qualsiasi carattere, ad eccezione dei caratteri jolly Entity SQL e delle parentesi quadre ([ ]
). Nell'esempio precedente il carattere punto esclamativo (!) è il carattere di escape.
Esempio
Nelle due query Entity SQL seguenti vengono utilizzati gli operatori LIKE e ESCAPE per determinare se una stringa di caratteri specifica corrisponde a un criterio specificato. La prima query consente di eseguire una ricerca per l'oggetto Name
che inizia con i caratteri Down_
. In questa query viene utilizzata l'opzione ESCAPE perché la sottolineatura (_
) è un carattere jolly. Senza l'opzione ESCAPE, tramite la query verrebbe eseguita una ricerca di qualsiasi valore Name
che inizia con la parola Down
seguita da qualsiasi carattere singolo diverso dal carattere di sottolineatura. Le query sono basate sul modello Sales di AdventureWorks. Per compilare ed eseguire questa query, effettuare le operazioni seguenti:
Seguire la procedura indicata in Procedura: eseguire una query che restituisce risultati PrimitiveType (EntityClient).
Passare la query seguente come argomento al metodo
ExecutePrimitiveTypeQuery
:
-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Products contained a Name
-- with the value 'Down_Tube', the following query would find that
-- value.
Select value P.Name FROM AdventureWorksEntities.Products
as P where P.Name LIKE 'DownA_%' ESCAPE 'A'
-- LIKE
Select value P.Name FROM AdventureWorksEntities.Products
as P where P.Name like 'BB%'