LIKE (Entity SQL)
Détermine si une String
de caractères donnée correspond à un modèle spécifié.
Syntaxe
match [NOT] LIKE pattern [ESCAPE escape]
Arguments
match
Expression Entity SQL qui prend la valeur d’un String
.
pattern
Modèle devant correspondre à la valeur String
spécifiée.
escape
Caractère d’échappement.
NOT Indique que la valeur du résultat de l’opérateur LIKE est inversée.
Valeur de retour
true
si la string
correspond au modèle ; sinon, false
.
Notes
Les expressions Entity SQL qui utilisent l’opérateur LIKE sont évaluées de façon très similaire aux expressions qui utilisent l’égalité comme critère de filtre. Toutefois, les expressions Entity SQL qui utilisent l’opérateur LIKE peuvent inclure des littéraux et des caractères génériques.
Le tableau ci-dessous décrit la syntaxe de la chaîne (string
) de modèle.
Caractère générique | Description | Exemple |
---|---|---|
% | Toute chaîne (string ) de zéro, un ou plusieurs caractères. |
title like '%computer%' recherche tous les titres comprenant le mot "computer" . |
_ (souligné) | N'importe quel caractère. | firstname like '_ean' recherche tous les prénoms de quatre lettres qui se terminent par "ean ," comme Jean ou Sean. |
[ ] | Tout caractère unique se trouvant dans la plage ([a-f]) ou l'ensemble spécifié ([abcdef]). | lastname like '[C-P]arsen' recherche les noms de famille se terminant par « arsen » et commençant par n’importe quel caractère unique compris entre C et P, tels que Carsen ou Larsen. |
[^] | Tout caractère unique ne se trouvant pas dans la plage ([^a-f]) ou l'ensemble spécifié ([^abcdef]). | lastname like 'de[^l]%' recherche tous les noms de famille qui commencent par « de » et dont la lettre suivante n’est pas un « l ». |
Notes
L’opérateur Entity SQL LIKE et la clause ESCAPE ne peuvent pas être appliqués aux valeurs de System.DateTime
ou System.Guid
.
Le mot clé LIKE prend en charge la recherche générique ASCII ainsi que la recherche générique Unicode. Lorsque tous les paramètres sont des caractères ASCII, une recherche générique ASCII est effectuée. Si un ou plusieurs arguments sont de type Unicode, tous les arguments sont convertis en Unicode et une recherche générique Unicode est effectuée. Lors de l'utilisation de données Unicode avec LIKE, les espaces de droite sont significatifs ; pour les autres données, cependant, ils ne le sont pas. La syntaxe de chaîne de modèle d’Entity SQL est identique à celle de Transact-SQL.
Une chaîne peut comprendre des caractères normaux ainsi que des caractères génériques. Au cours de l'analyse, les caractères normaux doivent correspondre exactement aux caractères spécifiés dans la string
de caractères. Toutefois, les caractères génériques peuvent être associés à des portions aléatoires de la chaîne de caractères. Lorsqu'il est utilisé avec des caractères génériques, l'opérateur LIKE est plus souple que les opérateurs de comparaison de chaînes « = » et « != ».
Notes
Vous pouvez utiliser des extensions spécifiques au fournisseur si vous ciblez un fournisseur spécifique. Toutefois, de telles constructions peuvent être traitées différemment par d'autres fournisseurs, par exemple. SqlServer prend en charge les modèles [first-last] et [^first-last]. Le premier modèle correspond exactement à un caractère compris entre les premier et dernier caractères, tandis que le second modèle correspond exactement à un caractère non compris entre les premier et dernier caractères.
Caractère d'échappement
En utilisant la clause ESCAPE, vous pouvez rechercher des chaînes de caractères qui contiennent un ou plusieurs des caractères génériques spéciaux décrits dans le tableau de la section précédente. Par exemple, supposons que plusieurs documents contiennent le littéral « 100 % » dans le titre et que vous souhaitez rechercher tous ces documents. Le caractère de pourcentage (%) étant un caractère générique, vous devez le placer dans une séquence d’échappement par le biais de la clause Entity SQL ESCAPE pour exécuter la recherche avec succès. Voici un exemple de ce filtre :
"title like '%100!%%' escape '!'"
Dans cette expression de recherche, le caractère générique de pourcentage (%) qui suit immédiatement le point d'exclamation (!) est traité comme un littéral et non comme un caractère générique. Vous pouvez utiliser n’importe quel caractère en guise de caractère d’échappement à l’exception des caractères génériques Entity SQL et des crochets ([ ]
). Dans l'exemple précédent, le point d'exclamation (!) fait office de caractère d'échappement.
Exemple
Les deux requêtes Entity SQL ci-dessous utilisent les opérateurs LIKE et ESCAPE pour déterminer si une chaîne de caractères spécifique correspond à un modèle spécifié. La première requête recherche le Name
qui commence par les caractères Down_
. Cette requête utilise l'option ESCAPE car le caractère de soulignement (_
) est un caractère générique. Sans l'option ESCAPE, la requête rechercherait toutes les valeurs Name
commençant par le mot Down
suivi de tout caractère unique autre que le caractère de soulignement. Les requêtes sont basées sur le modèle de vente AdventureWorks Sales Model. Pour compiler et exécuter cette requête, procédez comme suit :
Suivez la procédure indiquée dans Comment : Exécuter une requête qui retourne des résultats PrimitiveType.
Transmettez à la méthode
ExecutePrimitiveTypeQuery
la requête suivante en tant qu'argument :
-- 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%'