LIKE (язык Entity SQL)
Определяет, соответствует ли аргумент типа String заданному шаблону.
[NOT] LIKE ( expression )
Аргументы
- match
Выражение Entity SQL , значением которого является String.
- pattern
Шаблон для сопоставления с заданным значением String.
- escape
Escape-символ.
- NOT
Указывает, что результат оператора LIKE должен быть инвертирован.
Возвращаемое значение
Равно true, если string соответствует шаблону, в противном случае равно false.
Замечания
В основном выражения Entity SQL , в которых используется оператор LIKE, вычисляются тем же способом, что и выражения, в которых в качестве условия фильтра используется оператор равенства. Однако выражения Entity SQL с оператором LIKE могут включать как литералы, так и символы-шаблоны.
В следующей таблице описан синтаксис шаблона string.
Символ-шаблон | Описание | Пример |
---|---|---|
% |
Любое значение string длиной от нуля и более символов. |
По условию |
_ (символ подчеркивания) |
Любой отдельный символ. |
По условию |
[ ] |
Любой отдельный символ в диапазоне ([a-f]) или наборе ([abcdef]). |
По условию |
[^] |
Любой символ, содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]). |
По условию |
Примечание |
---|
Оператор LIKE и предложение ESCAPE языка Entity SQL не могут применяться к значениям System.DateTime и System.Guid. |
Оператор LIKE поддерживает сравнение по шаблонам в ASCII и Юникоде. Если все параметры имеют символьный тип ASCII, то применяется шаблон ASCII. Если один или несколько аргументов представлен в Юникоде, то выполняется преобразование всех аргументов в Юникод, а затем применяется шаблон в Юникоде. Завершающие пробелы учитываются только при работе оператора LIKE с данными в Юникоде. Для других типов данных завершающие пробелы не учитываются. Строка шаблона языка Entity SQL имеет тот же синтаксис, что и Transact-SQL .
Шаблон может включать в себя обычные символы и символы-шаблоны. Во время сравнения с шаблоном обычные символы должны в точности совпадать с символами, присутствующими в string. Символы-шаблоны могут совпадать с произвольными элементами символьной строки. При использовании символов-шаблонов оператор LIKE более гибок, нежели операторы сравнения строки = и !=.
Примечание |
---|
Для работы с конкретным поставщиком могут использоваться расширения, специфические для поставщика.Однако такие конструкции другими поставщиками могут обрабатываться иначе. Например,SqlServer поддерживает шаблоны [первый-последний] и [^первый-последний], в которых первый сопоставляет ровно один символ между первым и последним, а последний — ровно один символ, который не находится между первым и последним. |
Escape
Предложение ESCAPE позволяет искать символьные строки, в состав которых входит один или более специальных символов-шаблонов, описанных в таблице в прошлом разделе. Предположим, нужно найти все документы, содержащие в заголовке литерал «100%». Поскольку символ процента (%) является символом-шаблоном, для успешного выполнения поиска необходимо экранировать его при помощи предложения ESCAPE языка Entity SQL . Ниже приведен пример этого фильтра.
"title like '%100! %%' escape '!'"
В этом выражении поиска символ-шаблон процента (%), немедленно следующий за символом восклицательного знака (!), рассматривается как литерал, а не как символ-шаблон. В качестве escape-символа можно использовать любой символ, кроме символов-шаблонов Entity SQL и символов квадратных скобок ([ ]
). В прошлом примере символ восклицательного знака (!) используется как escape-символ.
Пример
В следующих двух запросах Entity SQL операторы LIKE и ESCAPE определяют, соответствует ли символьная строка заданному шаблону. Первый запрос выполняет поиск Name
, начинающегося с символов Down_
. В этом запросе используется параметр ESCAPE, так как символ подчеркивания (_
) является символом-шаблоном. Без указания параметра ESCAPE запрос будет выполнять поиск любых значений Name
, начинающихся со слова Down
, за которым следует любой единичный символ, отличный от символа подчеркивания. Запросы основаны на модели AdventureWorks Sales. Для компиляции и запуска этого запроса выполните следующие шаги.
Следуйте инструкциям в разделе Как выполнить запрос, возвращающий результаты типов-примитивов (EntityClient).
Передайте следующий запрос в качестве аргумента методу
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%'