Sdílet prostřednictvím


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 Stringvzorem .

escape Řídicí znak.

NOT Určuje, že výsledek funkce LIKE se neguje.

Návratová hodnota

true pokud odpovídá string vzoru; falsev 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í "eanna ", 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:

  1. Postupujte podle pokynů v části Postupy: Provedení dotazu, který vrací výsledky PrimitiveType.

  2. 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%'

Viz také