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


[NOT] LIKE (язык Entity SQL)

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

[NOT] LIKE ( expression )

Аргументы

  • match
    Выражение Entity SQL, значением которого является String.
  • pattern
    Шаблон для сопоставления с заданным значением String.
  • escape
    Экранирующий символ.
  • NOT
    Указывает, что результат оператора LIKE должен быть инвертирован.

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

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

Замечания

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

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

Символ-шаблон Описание Пример

%

Любое значение string длиной от нуля и более символов.

По условию title like '%computer%' будут найдены все названия, содержащие слово "computer" (в любом месте названия).

_ (символ подчеркивания)

Любой отдельный символ.

По условию firstname like '_ean' будут найдены имена из четырех букв, которые оканчиваются на "ean, например «Dean» или «Sean».

[ ]

Любой отдельный символ в диапазоне ([a-f]) или наборе ([abcdef]).

По условию lastname like '[C-P]arsen' будут найдены фамилии, которые оканчиваются на «arsen», а начинаются с любого символа между «C» и «P», например «Carsen» или «Larsen».

[^]

Любой символ, содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]).

По условию lastname like 'de[^l]%' будут найдены все фамилии, которые начинаются с символов «de» и не включают символа «l» в качестве следующего символа.

NoteПримечание.

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

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

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

NoteПримечание.

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

Escape

Предложение ESCAPE позволяет искать символьные строки, в состав которых входит один или более специальных символов-шаблонов, описанных в таблице в прошлом разделе. Предположим, нужно найти все документы, содержащие в заголовке литерал «100%». Поскольку символ процента (%) является символом-шаблоном, для успешного выполнения поиска необходимо экранировать его при помощи предложения ESCAPE языка Entity SQL. Ниже приведен пример этого фильтра.

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

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

Примеры

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

  1. Следуйте инструкциям в разделе Как выполнить запрос, возвращающий типы-примитивы (EntityClient).

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

// LIKE and ESCAPE
// If an AdventureWorksEntities.Product contained a Name 
// with the value 'Down_Tube', the following query would find that 
// value.
Select value P.Name FROM AdventureWorksEntities.Product 
    as P where P.Name LIKE 'DownA_%' ESCAPE 'A'

// LIKE
Select value P.Name FROM AdventureWorksEntities.Product 
    as P where P.Name like 'BB%'

См. также

Основные понятия

Операторы сравнения (язык Entity SQL)
Справочник по Entity SQL