LIKE (Entity SQL)
Określa, czy określony znak String
pasuje do określonego wzorca.
Składnia
match [NOT] LIKE pattern [ESCAPE escape]
Argumenty
match
Wyrażenie Entity SQL, które oblicza wartość .String
pattern
Wzorzec zgodny z określonym String
elementem .
escape
Znak ucieczki.
NOT Określa, że wynik LIKE ma być negowany.
Wartość zwracana
true
string
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:
Postępuj zgodnie z procedurą w temacie Instrukcje: Wykonywanie zapytania zwracającego wyniki Typ pierwotny.
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%'