Поделиться через


LIKE (Entity SQL)

Определяет, соответствует ли определенный символ String указанному шаблону.

Синтаксис

match [NOT] LIKE pattern [ESCAPE escape]

Аргументы

match Выражение Entity SQL, которое вычисляет значение String.

pattern Шаблон, соответствующий указанному String.

escape Escape-символ.

NOT Указывает, что результат LIKE может быть отрицаем.

Возвращаемое значение

trueЗначение , falseесли шаблон string соответствует шаблону; в противном случае .

Замечания

Выражения Entity SQL, использующие оператор LIKE, оцениваются так же, как выражения, использующие равенство в качестве критерия фильтра. Однако выражения Entity SQL, использующие оператор LIKE, могут включать как литералы, так и подстановочные знаки.

В следующей таблице описан синтаксис шаблона string.

Подстановочный знак Описание Пример
% Любой из string нулевых или более символов. title like '%computer%' находит все названия с словом "computer" в любом месте заголовка.
_ (символ подчеркивания) Любой одиночный символ. firstname like '_ean' находит все четыре буквы первых имен, которые заканчиваются "ean", например Дин или Шон.
[ ] Любой отдельный символ в указанном диапазоне ([a-f]) или набор ([abcdef]). lastname like '[C-P]arsen' находит фамилии, заканчивающиеся "arsen" и начиная с любого одного символа между C и P, например Карсен или Ларсен.
[^] Любой отдельный символ, не в указанном диапазоне ([^a-f]) или set ([^abcdef]). lastname like 'de[^l]%' находит все фамилии, начинающиеся с "de", и не включают "l" в качестве следующей буквы.

Замечание

Оператор Entity SQL LIKE и предложение ESCAPE нельзя применить к System.DateTime или System.Guid значениям.

LIKE поддерживает сопоставление шаблонов ASCII и сопоставление шаблонов Юникода. Если все параметры являются символами ASCII, выполняется сопоставление шаблонов ASCII. Если один или несколько аргументов являются Юникодом, все аргументы преобразуются в Юникод и сопоставление шаблонов Юникода. При использовании Юникода с LIKE конечные пробелы являются значительными; Однако для неискода конечные пробелы не являются значительными. Синтаксис строки шаблона Entity SQL совпадает с синтаксисом строки Transact-SQL.

Шаблон может включать обычные символы и символы-шаблоны. Во время сопоставления шаблонов обычные символы должны точно соответствовать символам, указанным в символе string. Однако подстановочные знаки можно сопоставить с произвольными фрагментами строки символов. При использовании с подстановочными знаками оператор LIKE является более гибким, чем операторы сравнения строк = и !=.

Замечание

Вы можете использовать расширения для конкретного поставщика, если вы нацеливаетесь на определенного поставщика. Однако такие конструкции могут обрабатываться по-разному другими поставщиками, например. SqlServer поддерживает шаблоны [first-last] и [^first-last], в которых бывший соответствует точно одному символу между первым и последним, а последний соответствует ровно одному символу, который не находится между первым и последним.

Побег

С помощью предложения ESCAPE можно искать символьные строки, содержащие один или несколько специальных подстановочных знаков, описанных в таблице в предыдущем разделе. Например, предположим, что несколько документов включают литерал "100%" в заголовок, и вы хотите искать все эти документы. Так как символ процента (%) является подстановочным знаком, его необходимо экранировать с помощью предложения Entity SQL ESCAPE для успешного выполнения поиска. Ниже приведен пример этого фильтра.

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

В этом выражении поиска подстановочный знак процента (%) сразу после восклицательного знака (!) рассматривается как литерал, а не как подстановочный знак. Вы можете использовать любой символ в качестве escape-символа, за исключением подстановочных знаков Entity SQL и квадратных скобков ([ ]) символов. В предыдущем примере восклицательный знак (!) является escape-символом.

Пример

Следующие два запроса Entity SQL используют операторы LIKE и ESCAPE, чтобы определить, соответствует ли определенная символьная строка указанному шаблону. Первый запрос выполняет поиск Name символов, начинающихся с символов Down_. Этот запрос использует параметр ESCAPE, так как символ подчеркивания (_) является подстановочным знаком. Без указания параметра ESCAPE запрос будет выполнять поиск любых Name значений, начинающихся с слова Down , за которым следует любой один символ, отличный от символа подчеркивания. Запросы основаны на модели продаж AdventureWorks. Чтобы скомпилировать и запустить этот запрос, выполните следующие действия.

  1. Выполните процедуру, описанную в разделе "Практическое руководство. Выполнение запроса, возвращающего результаты PrimitiveType".

  2. Передайте следующий запрос в качестве аргумента в ExecutePrimitiveTypeQuery метод:

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

См. также