LIKE (Entity SQL)
Určuje, zda určitý znak String
odpovídá zadanému vzoru.
Syntaxe
match [NOT] LIKE pattern [ESCAPE escape]
Argumenty
match
Výraz Entity SQL, který se vyhodnotí jako String
.
pattern
Vzor, který se má shodovat se zadaným String
vzorem .
escape
Řídicí znak.
NOT Určuje, že výsledek funkce LIKE se neguje.
Návratová hodnota
true
pokud odpovídá string
vzoru; false
v opačném případě .
Poznámky
Výrazy SQL entity, které používají operátor LIKE, se vyhodnocují stejným způsobem jako výrazy, které používají rovnost jako kritéria filtru. Výrazy Entity SQL, které používají operátor LIKE, však mohou obsahovat literály i zástupné znaky.
Následující tabulka popisuje syntaxi vzoru string
.
Zástupný znak | Popis | Příklad |
---|---|---|
% | Libovolný string z nuly nebo více znaků. |
title like '%computer%' najde všechny názvy se slovem "computer" kdekoli v názvu. |
_ (podtržítko) | Libovolný jeden znak. | firstname like '_ean' najde všechna čtyři písmena křestní jména končící "ean na ", například Dean nebo Sean. |
[ ] | Libovolný jeden znak v zadaném rozsahu ([a-f]) nebo sada ([abcdef]). | lastname like '[C-P]arsen' najde příjmení končící na "ene" a začíná libovolným jediným znakem mezi písmeny C a P, jako je Carsen nebo Larsen. |
[^] | Libovolný jeden znak, který není v zadaném rozsahu ([^a-f]) nebo v sadě ([^abcdef]). | lastname like 'de[^l]%' najde všechna příjmení, která začínají písmenem "de" a neobsahují "l" jako následující písmeno. |
Poznámka:
Operátor Entity SQL LIKE a klauzule ESCAPE nelze použít na hodnoty ani System.Guid
na System.DateTime
hodnoty.
LIKE podporuje porovnávání vzorů ASCII a porovnávání vzorů Unicode. Pokud jsou všechny parametry znaky ASCII, provede se porovnávání vzorů ASCII. Pokud je jeden nebo více argumentů Unicode, všechny argumenty se převedou na unicode a porovnávání vzorů Unicode. Pokud používáte Unicode s like, koncové prázdné hodnoty jsou významné; Pro jiné než Unicode však koncové prázdné hodnoty nejsou významné. Syntaxe řetězce vzoru Entity SQL je stejná jako syntaxe jazyka Transact-SQL.
Vzor může obsahovat běžné znaky a zástupné znaky. Během porovnávání vzorů musí regulární znaky přesně odpovídat znakům zadaným ve znaku string
. Zástupné znaky se ale dají spárovat s libovolnými fragmenty řetězce znaků. Při použití se zástupnými znaky je operátor LIKE flexibilnější než operátory porovnání řetězců = a != .
Poznámka:
Pokud cílíte na konkrétního poskytovatele, můžete použít rozšíření specifická pro konkrétního poskytovatele. Tyto konstrukce však mohou být zpracovávány odlišně jinými poskytovateli, například. SqlServer podporuje vzory [first-last] a [^first-last], kde první a poslední odpovídá přesně jednomu znaku mezi prvním a posledním a druhý znak přesně jeden znak, který není mezi prvním a posledním.
Escape
Pomocí klauzule ESCAPE můžete hledat řetězce znaků, které obsahují jeden nebo více speciálních zástupných znaků popsaných v tabulce v předchozí části. Předpokládejme například, že několik dokumentů obsahuje literál "100 %" v názvu a chcete vyhledat všechny tyto dokumenty. Vzhledem k tomu, že znak procenta (%) je zástupný znak, musíte ho pomocí klauzule Entity SQL ESCAPE úspěšně spustit hledání. Následuje příklad tohoto filtru.
"title like '%100!%%' escape '!'"
V tomto hledaném výrazu se procento zástupných znaků (%) bezprostředně za vykřičníkem (!) považuje za literál, nikoli jako zástupný znak. Libovolný znak můžete použít jako řídicí znak s výjimkou zástupných znaků Entity SQL a hranatých závorek ([ ]
). V předchozím příkladu je vykřičník (!) řídicí znak.
Příklad
Následující dva dotazy Entity SQL používají operátory LIKE a ESCAPE k určení, zda určitý znakový řetězec odpovídá zadanému vzoru. První dotaz hledá Name
, který začíná znaky Down_
. Tento dotaz používá možnost ESCAPE, protože podtržítko (_
) je zástupný znak. Bez zadání možnosti ESCAPE by dotaz vyhledá všechny Name
hodnoty, které začínají slovem Down
následovaným libovolným jiným znakem než podtržítkem. Dotazy jsou založené na prodejním modelu AdventureWorks. Chcete-li tento dotaz zkompilovat a spustit, postupujte takto:
Postupujte podle pokynů v části Postupy: Provedení dotazu, který vrací výsledky PrimitiveType.
Jako argument metody
ExecutePrimitiveTypeQuery
předejte následující dotaz:
-- 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%'