Предикат LIKE стр. 1
Предикат LIKE сравнивает строку, указанную в первом выражении, для вычисления значения строки, называемого проверяемым значением, с образцом, который определен во втором выражении для вычисления значения строки. В образце разрешается использовать два трафаретных символа:
|
Найти все корабли, имена классов которых заканчиваются на букву ‘о’
Результатом выполнения запроса будет следующая таблица:
|
Найти все корабли, имена классов которых заканчиваются на букву ‘о’, но не на ‘go’
|
Для проверки значения на соответствие строке «25%» можно воспользоваться таким предикатом:
Истинностное значение предиката LIKE присваивается в соответствии со следующими правилами:
Предикат SQL LIKE для поиска строки с заданными символами
Применение предиката LIKE с простыми условиями
Приведём виды наиболее распространённых выражений, которые используются с предикатом LIKE для поиска подстроки.
Пример 1. Вывести спектакли, названия которых начинаются со слова ‘King’.
Пишем запрос в котором с предикатом LIKE используем выражение ‘King%’:
В результате выполнения запроса будет выведена таблица с одной строкой:
Пример 2. Вывести спектакли, названия которых начинаются с буквы ‘O’ и содержат 7 символов.
Пишем запрос в котором с предикатом LIKE используем выражение ‘O______’ (подчёркивание проставлено 6 раз):
В результате выполнения запроса будет выведена таблица с одной строкой:
Пример 3. Вывести спектакли, названия которых заканчиваются буквой ‘a’.
Пишем запрос в котором с предикатом LIKE используем выражение ‘%a’ (подчёркивание проставлено 6 раз):
В результате выполнения запроса будет выведена таблица со следующими строками:
| Matilda |
| Antony and Cleopatra |
Пример 4. Вывести спектакли, в названии которых содержится слово «War», например, такие как «The War That Never Ends», «The Wars of the Roses», но не «Howards End».
Пишем запрос в котором с предикатом LIKE используем выражение ‘%War%’:
В результате выполнения запроса будет выведена таблица:
| The Wars of the Roses |
| The War That Never Ends |
Пример 5. Вывести спектакли, в названиях которых содержится не менее пяти пробелов.
Пишем запрос в котором с предикатом LIKE используем выражение ‘% % % % % %’:
В результате выполнения запроса будет выведена таблица:
Условия запросов. Часть 2: оператор LIKE
В части 1 этого трехсерийного ряда мы рассматривают базовый пример использования критериев в запросе, чтобы более подробно задать вопрос запроса. Это очень хорошо, если вы точно знаете, что ищите. Но что делать, если вы хотите увидеть неначертные совпадения — скажем, все, чьи фамилии начинаются с «Th?». Вам повезло: в Access есть мощные средства, которые можно использовать в условиях запроса для извлечения неиспольстиковых совпадений: поддиактные знаки и оператор LIKE.
Поддиавные знаки
Если вы когда-либо играли в игру, вы можете угадать, что делать с подменю: их можно заменить другими символами. В любой базе данных можно использовать только пять поддиавных знаков. Пять из них соответствуют стандарту ANSI-89, а остальные соответствуют стандарту ANSI-92. каждая база данных поддерживает один стандартный или другой, но не обе. Вы можете задать стандарт ANSI.
Знаки ANSI-89
Соответствует любому количеству символов.
Звездочку можно использовать в любом месте строки символов.
По этой причине будет по-настоящему найти «что», «белое» и «зачем», но не «некоторое» или «часы».
Соответствует любому одиночному символу алфавита.
По найму будут найти «ст?ст?», «колокольчик» и «счет»
Используется вместе с другими символами (заключенными в скобки).
Соответствует любому одиночному символу, указанному в квадратных скобках.
По метке «ст[ оу] ст» будут найти «ст» и «колокольчик», но не «счет»
Используется в скобках вместе с другими символами.
Соответствует любому символу, не указанному в квадратных скобках.
b[! ст ] ll найдет «счет» и «ст», но не «ст», «ст» или «колокольчик»
Используется в скобках вместе с другими символами.
Соответствует любому символу из диапазона.
Диапазон следует указывать в алфавитном порядке (от А до Я, а не от Я до А).
Поиск[а-ы]н находит «плохое», «bbd» и «bcd»
Соответствует любому цифровому символу.
1#3 находит 103, 113, 123
Знаки ANSI-92
Соответствует любому количеству символов.
Может использоваться в качестве первого или последнего символа в строке символов.
wh % находит то, что, белое и почему, но не через некоторое время или смотреть.
Соответствует любому одиночному символу алфавита.
B_ll поимки «стюл», «колокольчик» и «счет»
Используется вместе с другими символами.
Соответствует любому одиночному символу, указанному в квадратных скобках.
По метке «ст[ оу] ст» будут найти «ст» и «колокольчик», но не «счет»
Используется в скобках вместе с другими символами.
Соответствует любому символу, не указанному в квадратных скобках.
По найму ст[^ оу ] будут будут найти «ст» и «ст», но не «ст», «ст» или «колокольчик»
Используется в скобках вместе с другими символами.
Соответствует любому символу из диапазона.
Диапазон следует указывать в алфавитном порядке (от А до Я, а не от Я до А).
Пои[а-ы]н находит «плохое», «bbd»
Оператор LIKE
В любом критерии, где используются поддиавные знаки, в Access требуется слово «Нравится». Оператор LIKE используется непосредственно перед строкой, содержаной поддиавные знаки. Access также требуется, чтобы строка была окружена кавычками. Например, чтобы найти соответствие текстовым данным с буквой T, используйте такое выражение:
В последних версиях Access добавляет оператор LIKE и кавычка, если вы их опустить. Поэтому если вы используете выражение *t* Access изменяет его на Like «*t*» при запуске запроса или перемещение курсора за пределы критерия.
См. like и поддиавные знаки в действии
Если вы хотите посмотреть видеоролик, демонстрирующий использование этих инструментов, посмотрите этот видеоролик с YouTube в области «Нравится» и поддиавными знаками в условиях запроса Access.
Далее в части 3 этого трехсерийного ряда: запрос на ввод данных с помощью параметра.
SQL Оператор LIKE
SQL LIKE
Оператор LIKE используется в предложении WHERE для поиска указанного шаблона в столбце.
Есть два подстановочных знака, часто используемых в сочетании с оператором LIKE:
Примечание: MS Access использует звездочку (*) вместо знака процента (%) и вопросительный знак (?) вместо подчеркивания (_).
Знак процента и подчеркивание также могут использоваться в комбинациях!
Синтаксис LIKE
Совет: Вы также можете комбинировать любое количество условий с помощью операторов AND или OR.
Вот несколько примеров, показывающих различные операторы LIKE с подстановочными знаками ‘%’ и ‘_’:
| Оператор LIKE | Описание |
|---|---|
| WHERE CustomerName LIKE ‘a%’ | Находит любые значения, которые начинаются с «a» |
| WHERE CustomerName LIKE ‘%a’ | Находит любые значения, которые заканчиваются на «a» |
| WHERE CustomerName LIKE ‘%or%’ | Находит любые значения, которые имеют «or» в любой позиции |
| WHERE CustomerName LIKE ‘_r%’ | Находит любые значения, имеющие букву «r» во второй позиции |
| WHERE CustomerName LIKE ‘a__%’ | Находит любые значения, начинающиеся с буквы «a» и имеющие длину не менее 3 символов |
| WHERE ContactName LIKE ‘a%o’ | Находит любые значения, которые начинаются с «a» и заканчиваются «о» |
Демо база данных
Ниже приведен выбор из таблицы «Customers» в образце базы данных Northwind:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 |
Примеры SQL LIKE
Следующая инструкция SQL выбирает всех клиентов с именем клиента, начинающимся с «a»:
Пример
Следующая инструкция SQL выбирает всех клиентов с именем клиента, оканчивающимся на «a»:
Пример
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которые имеют «or» в любой позиции:
Пример
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которые имеют «r» во второй позиции:
Пример
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которое начинается с буквы «a» и имеет длину не менее 3 символов:
Пример
Следующая инструкция SQL выбирает всех клиентов с именем контакта, которое начинается с «a» и заканчивается на «o»
Пример
Следующая инструкция SQL выбирает всех клиентов с именем клиента, которое не начинается с «a»:
LIKE (Transact-SQL)

Синтаксис
ESCAPE и STRING_ESCAPE сейчас не поддерживаются в Azure Synapse Analytics и Система платформы аналитики (PDW).
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
match_expression
Любое допустимое выражение expression символьного типа данных.
pattern
Конкретная строка символов для поиска в match_expression может содержать следующие допустимые символы-шаблоны. Длина значения pattern не может превышать 8000 байт.
| Символ-шаблон | Описание | Пример |
|---|---|---|
| % | Любая строка, содержащая ноль или более символов. | Инструкция WHERE Название LIKE ‘%компьютер%’ выполняет поиск и выдает все названия книг, содержащие слово «компьютер». |
| _ (подчеркивание) | Любой одиночный символ. | Инструкция WHERE фамилия_автора LIKE ‘_етров’ выполняет поиск и выдает все имена, состоящие из шести букв и заканчивающиеся сочетанием «етров» (Петров, Ветров и т.п.). |
| [ ] | Любой одиночный символ, содержащийся в диапазоне ([a-f]) или наборе ([abcdef]). | Инструкция WHERE Фамилия_автора LIKE ‘[Л-С]омов’ выполняет поиск и выдает все фамилии авторов, заканчивающиеся на «омов» и начинающиеся на любую букву в промежутке от «Л» до «С», например Ломов, Ромов, Сомов и т.п. При выполнении операции поиска в диапазоне символы, включенные в диапазон, могут изменяться в зависимости от правил сортировки параметров сортировки. |
| [^] | Любой одиночный символ, не содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]). | Инструкция WHERE Фамилия_автора LIKE ‘ив[^а]%’ выполняет поиск и выдает все фамилии, начинающиеся на «ив», в которых третья буква отличается от «а». |
escape_character
Символ, помещаемый перед символом-шаблоном для того, чтобы символ-шаблон рассматривался как обычный символ, а не как шаблон. Аргумент escape_character является символьным выражением, не имеющим значения по умолчанию и возвращающим результат в виде одного символа.
Типы результата
Boolean
Значение результата
Оператор LIKE возвращает значение TRUE, если аргумент match_expression совпадает с указанным аргументом pattern.
Комментарии
При использовании оператора LIKE для сравнения строк во внимание принимаются все символы строки-шаблона. К значимым символам также относятся начальные и конечные пробелы. Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв ‘ (с символом пробела на конце), то строка, содержащая «абв» (без пробела), не будет возвращена. Однако завершающие пробелы в выражении, с которым сравнивается шаблон, не учитываются. Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв’ (без знака пробела на конце), то будут возвращены все строки, содержащие «абв», как с завершающими пробелами, так и без них.
При сравнении строк с помощью оператора LIKE с использованием шаблона, содержащего тип данных char и varchar, могут возникнуть проблемы из-за методов хранения каждого типа данных. В ходе выполнения следующего примера локальная переменная char передается хранимой процедуре, а затем с помощью сравнения с шаблоном выполняется поиск всех сотрудников, чьи фамилии начинаются с указанной последовательности букв.
Процедура из следующего примера выполняется успешно, так как завершающие пробелы к переменной типа varchar не добавляются.
Совпадение с шаблоном с использованием оператора LIKE
Оператор LIKE поддерживает шаблоны в ASCII и Юникоде. Если все аргументы (match_expression, pattern и escape_character, если он указан) имеют символьный тип ASCII, то применяется шаблон ASCII. В случае, когда какой-либо из аргументов имеет тип данных Юникод, выполняется преобразование всех аргументов в Юникод и применяется шаблон Юникод. Если вы используете оператор LIKE с типом данных Юникода (nchar или nvarchar), завершающие пробелы учитываются в отличие от других типов данных (не Юникода). Работа оператора LIKE с данными в Юникоде совместима со стандартом ISO. Принцип работы оператора LIKE с данными ASCII совместим с более ранними версиями SQL Server.
Приведенные ниже примеры поясняют различия между результатами сравнения данных с шаблонами оператора LIKE, представленными в Юникоде и ASCII.
Операции сравнения с помощью оператора LIKE зависят от параметров сортировки. Дополнительные сведения см. в разделе COLLATE (Transact-SQL).
Использование символа-шаблона «%»
Если в операторе LIKE указать символ ‘5%’, то компонент Компонент Database Engine будет искать число «5», за которым следует любая строка с числом символов от нуля и больше.
Использование символов-шаблонов в качестве литералов
Символы-шаблоны могут быть использованы в качестве литералов. Чтобы использовать символ-шаблон в качестве литерала, его необходимо заключать в скобки. В следующей таблице представлены несколько примеров применения ключевого слова LIKE вместе с символами-шаблонами [ ].
| Символ | Значение |
|---|---|
| LIKE ‘5[%]’ | 5 % |
| LIKE ‘[_]n’ | _n |
| LIKE ‘[a-cdf]’ | a, b, c, d или f |
| LIKE ‘[-acdf]’ | -, a, b, c, d или f |
| LIKE ‘[ [ ]’ | [ |
| LIKE ‘]’ | ] |
| LIKE ‘abc[_]d%’ | abc_d и abc_de |
| LIKE ‘abc[def]’ | abcd, abce и abcf |
Совпадение с шаблоном с помощью предложения ESCAPE
Если в шаблоне LIKE после escape-символа нет никакого символа, то шаблон является недопустимым и оператор LIKE возвращает значение FALSE. Если символ после escape-символа не является символом-шаблоном, то escape-символ игнорируется, а следующий символ рассматривается как обычный символ в шаблоне. К этим символам-шаблонам относятся: подчеркивание (_), процент (%) и левая квадратная скобка ([), в том случае, если они заключены в квадратные скобки. Escape-символы могут использоваться в квадратных скобках ([ ]), включая: знак вставки (^), дефис (-) и правую квадратную скобку (]).
Символ 0x0000 (char(0)) не определен в параметрах сортировки Windows, и его нельзя включать в LIKE.





