Udostępnij za pośrednictwem


LIKE (Entity SQL)

Określa, czy określony znak String pasuje do określonego wzorca.

Składnia

match [NOT] LIKE pattern [ESCAPE escape]

Argumenty

matchWyrażenie Entity SQL, które oblicza wartość .String

pattern Wzorzec zgodny z określonym Stringelementem .

escape Znak ucieczki.

NOT Określa, że wynik LIKE ma być negowany.

Wartość zwracana

truestring jeśli element jest zgodny ze wzorcem; w przeciwnym razie false.

Uwagi

Wyrażenia Języka SQL jednostki korzystające z operatora LIKE są obliczane w taki sam sposób, jak wyrażenia używające równości co kryteria filtrowania. Jednak wyrażenia Entity SQL używające operatora LIKE mogą zawierać zarówno literały, jak i symbole wieloznaczne.

W poniższej tabeli opisano składnię wzorca string.

Symbol wieloznaczny opis Przykład
% Dowolny string z zero lub więcej znaków. title like '%computer%' znajduje wszystkie tytuły ze słowem "computer" w dowolnym miejscu w tytule.
_ (podkreślenie) Dowolny pojedynczy znak. firstname like '_ean' znajduje wszystkie czteroliterowe imiona, które kończą się na "ean", takich jak Dean lub Sean.
[ ] Dowolny pojedynczy znak w określonym zakresie ([a-f]) lub ustawiony ([abcdef]). lastname like '[C-P]arsen' znajduje nazwiska kończące się "arsenem" i zaczyna się od dowolnego pojedynczego znaku między C i P, takich jak Carsen lub Larsen.
[^] Każdy pojedynczy znak nie mieści się w określonym zakresie ([^a-f]) lub ustawiony ([^abcdef]). lastname like 'de[^l]%' znajduje wszystkie nazwiska, które zaczynają się od "de" i nie zawierają "l" jako następującej litery.

Uwaga

Nie można zastosować operatora ENTITY SQL LIKE i klauzuli ESCAPE do System.DateTime wartości.System.Guid

Aplikacja LIKE obsługuje dopasowywanie wzorców ASCII i dopasowywanie wzorca Unicode. Gdy wszystkie parametry są znakami ASCII, jest wykonywane dopasowywanie wzorca ASCII. Jeśli co najmniej jeden argument to Unicode, wszystkie argumenty są konwertowane na format Unicode, a dopasowywanie wzorca Unicode jest wykonywane. W przypadku używania formatu Unicode z funkcją LIKE końcowe wartości puste są znaczące; jednak w przypadku wartości innych niż Unicode końcowe wartości puste nie są istotne. Składnia ciągu wzorca języka Entity SQL jest taka sama jak składnia języka Transact-SQL.

Wzorzec może zawierać zwykłe znaki i symbole wieloznaczne. Podczas dopasowywania wzorca zwykłe znaki muszą dokładnie odpowiadać znakom określonym w znaku string. Symbole wieloznaczne mogą być jednak dopasowywane do dowolnych fragmentów ciągu znaków. Gdy jest używany z symbolami wieloznacznymi, operator LIKE jest bardziej elastyczny niż operator porównania = i != ciągów.

Uwaga

Jeśli dotyczysz określonego dostawcy, możesz użyć rozszerzeń specyficznych dla dostawcy. Jednak takie konstrukcje mogą być traktowane inaczej przez innych dostawców, na przykład. Serwer SqlServer obsługuje wzorce [first-last] i [^first-last], w których były dopasowywuje dokładnie jeden znak między pierwszym i ostatnim, a drugi pasuje dokładnie do jednego znaku, który nie występuje między pierwszym i ostatnim.

Escape

Korzystając z klauzuli ESCAPE, można wyszukać ciągi znaków, które zawierają co najmniej jeden znak wieloznaczny opisany w tabeli w poprzedniej sekcji. Załóżmy na przykład, że kilka dokumentów zawiera literał "100%" w tytule i chcesz wyszukać wszystkie te dokumenty. Ponieważ znak procentu (%) jest symbolem wieloznacznymi, należy go użyć klauzuli ENTITY SQL ESCAPE, aby pomyślnie wykonać wyszukiwanie. Poniżej przedstawiono przykład tego filtru.

"title like '%100!%%' escape '!'"

W tym wyrażeniu wyszukiwania znak wieloznaczny (%) bezpośrednio po znaku wykrzyknika (!) jest traktowany jako literał, a nie jako znak wieloznaczny. Można użyć dowolnego znaku jako znaku ucieczki z wyjątkiem symboli wieloznacznych Entity SQL i kwadratowych znaków ([ ]). W poprzednim przykładzie znak wykrzyknika (!) jest znakiem ucieczki.

Przykład

Następujące dwa zapytania Entity SQL używają operatorów LIKE i ESCAPE, aby określić, czy określony ciąg znaków jest zgodny z określonym wzorcem. Pierwsze zapytanie wyszukuje Name znaki rozpoczynające się od znaków Down_. To zapytanie używa opcji ESCAPE, ponieważ podkreślenie (_) jest symbolem wieloznacznymi. Bez określenia opcji ESCAPE zapytanie wyszukuje wszystkie Name wartości rozpoczynające się od wyrazu Down , po którym następuje dowolny pojedynczy znak inny niż znak podkreślenia. Zapytania są oparte na modelu AdventureWorks Sales Model. Aby skompilować i uruchomić to zapytanie, wykonaj następujące kroki:

  1. Postępuj zgodnie z procedurą w temacie Instrukcje: Wykonywanie zapytania zwracającego wyniki Typ pierwotny.

  2. Przekaż następujące zapytanie jako argument do ExecutePrimitiveTypeQuery metody :

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

Zobacz też