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»:
Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Базы данных
SQL условие LIKE
В этом учебном материале вы узнаете, как использовать SQL условие LIKE (для сопоставления с шаблоном) с синтаксисом и примерами.
Описание
SQL условие LIKE позволяет использовать подстановочные символы для сопоставления с шаблоном в запросе. Условие LIKE используется в предложении WHERE оператора SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис для условия LIKE в SQL.
Параметры или аргумент
| customer_id | first_name | last_name | favorite_website |
|---|---|---|---|
| 4000 | Justin | Bieber | google.com |
| 5000 | Selena | Gomez | bing.com |
| 6000 | Mila | Kunis | yahoo.com |
| 7000 | Tom | Cruise | oracle.com |
| 8000 | Johnny | Depp | NULL |
| 9000 | Russell | Crowe | google.com |
Введите следующий SQL оператор.
Будет выбрано 2 записи. Вот результаты, которые вы должны получить.
| customer_id | first_name | last_name | favorite_website |
|---|---|---|---|
| 7000 | Tom | Cruise | oracle.com |
| 9000 | Russell | Crowe | google.com |
Использование нескольких подстановочных символов % в условии LIKE
Вы также можете использовать подстановочный символ % несколько раз с условием LIKE.
Используя ту же таблицу customers со следующими данными:
| customer_id | first_name | last_name | favorite_website |
|---|---|---|---|
| 4000 | Justin | Bieber | google.com |
| 5000 | Selena | Gomez | bing.com |
| 6000 | Mila | Kunis | yahoo.com |
| 7000 | Tom | Cruise | oracle.com |
| 8000 | Johnny | Depp | NULL |
| 9000 | Russell | Crowe | google.com |
Будет выбрано 3 записей. Вот результаты, которые вы должны получить.
| last_name |
|---|
| Bieber |
| Gomez |
| Depp |
В этом примере фамилии Bieber, Gomez и Depp содержат букву ‘е’.
| category_id | category_name |
|---|---|
| 25 | Deli |
| 50 | Produce |
| 75 | Bakery |
| 100 | General Merchandise |
| 125 | Technology |
Будет выбрано 2 записи. Вот результаты, которые вы должны получить.
| category_id | category_name |
|---|---|
| 25 | Deli |
| 75 | Bakery |
Использование нескольких подстановочных символов _ в условии LIKE
Если вы хотите сопоставить трехзначное значение, заканчивающееся на «5», вам нужно будет использовать подстановочный символ _ два раза. Вы можете изменить свой запрос следующим образом.
Теперь вы вернете значение category_id равное 125.
| category_id | category_name |
|---|---|
| 125 | Technology |
Далее давайте рассмотрим пример использования оператора NOT с условием LIKE.
В этом примере у нас есть таблица suppliers со следующими данными:
| supplier_id | supplier_name | city | state |
|---|---|---|---|
| 100 | Yandex | Moscow | Russian |
| 200 | Lansing | Michigan | |
| 300 | Oracle | Redwood City | California |
| 400 | Bing | Redmond | Washington |
| 500 | Yahoo | Sunnyvale | Washington |
| 600 | DuckDuckGo | Paoli | Pennsylvania |
| 700 | Qwant | Paris | France |
| 800 | Menlo Park | California | |
| 900 | Electronic Arts | San Francisco | California |
Будут выбраны 4 записи. Вот результаты, которые вы должны получить.
| supplier_id | supplier_name | city | state |
|---|---|---|---|
| 100 | Yandex | Moscow | Russian |
| 300 | Oracle | Redwood City | California |
| 400 | Bing | Redmond | Washington |
| 700 | Qwant | Paris | France |
В этом примере в таблице suppliers есть четыре записи, в которых supplier_name не содержит литеру ‘o’.
| test_id | test_value |
|---|---|
| 1 | 10% |
| 2 | 25% |
| 3 | 100 |
| 4 | 99 |
SQL Like: практическое руководство
Оператор SQL LIKE использует подстановочные знаки для поиска данных, похожих на определённый образец. Вы можете использовать подчёркивание для замены одного символа или знак процента для замены нуля, одного или нескольких символов.
Вы когда-нибудь хотели получить информацию из столбцов, которые содержат значение, похожее на другое? Например, предположим, что у вас есть таблица с именем «сотрудники». Может быть, вы хотите получить список сотрудников, название которых содержит «Продажи».
Вот где в игру вступает оператор SQL LIKE. В этой статье мы расскажем, как использовать оператор LIKE на сервере SQL для выполнения более конкретных запросов.
SQL LIKE
Оператор SQL LIKE находит записи в базе данных, значения столбцов которых соответствуют определённому шаблону. Шаблоны выражаются с помощью знаков процента, подчёркивания и текста, который вы ищете.
Например, мы можем использовать LIKE, чтобы получить всех сотрудников, чьи имена заканчиваются на S или чьё название включает Associate.
Оператор LIKE использует подстановочные знаки для получения данных, соответствующих определённому шаблону. Два подстановочных знака, часто используемых с оператором LIKE, следующие:
Вот структура запроса с использованием оператора LIKE:
SELECT column_name FROM table_name
WHERE column_name LIKE pattern;
В этом синтаксисе мы используем оператор LIKE в инструкции SQL SELECT. Вы можете использовать этот оператор в операторах INSERT, UPDATE и DELETE.
Давайте воспользуемся примером, чтобы проиллюстрировать, как работает SQL LIKE.
Пример SQL LIKE
Допустим, у нас есть таблица с информацией о сотрудниках, которые работают в компании. Мы хотим, чтобы получить имена и ветви каждого сотрудника, который работает в отрасли, чьё имя начинается с буквы S.
Для этого мы можем использовать следующий запрос:
SELECT name, branch FROM employees
WHERE branch LIKE ‘S%’;
База данных SQL-сервера возвращает:
| имя | ответвляться |
| Майк | Стэмфорд |
| Джефф | Сан-Франциско |
| Ханна | Сан-Франциско |
Знак процента после буквы S говорит наш код, который мы хотим получить все отрасли, чьё имя начинается с буквы S. Наш запрос возвращает каждое совпадение символьной строки.
Если бы мы хотели получить имена и должности каждого сотрудника, который является партнёром, включая старших сотрудников, мы могли бы использовать этот запрос:
SELECT name, title FROM employees
WHERE title LIKE ‘%Associate%’;
Наш запрос находит всех сотрудников, имена которых соответствуют шаблону «% Associate%». Запрос возвращает следующее:
| имя | заглавие |
| Люк | Сотрудник по продажам |
| Майк | Сотрудник по продажам |
| Алексис | Сотрудник по продажам |
| Ханна | Сотрудник по продажам |
| Джефф | Старший специалист по продажам |
Пример SQL NOT LIKE
Мы можем использовать оператор NOT LIKE, чтобы выбрать все записи, которые не соответствуют определённому условию. Оператор NOT LIKE представляет собой комбинацию операторов SQL NOT и LIKE. Оператор NOT находит записи, не соответствующие условию.
Например, мы могли бы использовать NOT LIKE, чтобы получить имена каждого сотрудника, имя которого не превышает четырёх символов. Вот SQL-запрос, который мы могли бы использовать для этой цели:
SELECT name FROM employees
WHERE name NOT LIKE ‘____’;
Наш запрос пропустит каждого сотрудника, имя которого не состоит из четырёх символов, и вернёт остальных.
Каждый подстановочный знак подчёркивания представляет один символ. Если имя состоит из более или менее четырёх символов, оно не будет отображаться в нашем наборе результатов.
Наша база данных возвращает все записи, соответствующие нашему шаблону поиска:
| имя |
| Алексис Ханна Джона Джефф |
Вывод
Оператор SQL LIKE позволяет использовать шаблоны для поиска записей в базе данных. Вы можете использовать эту запись для поиска похожих записей без указания точного совпадения, которое должно быть выполнено. Оператор LIKE появляется в разделе WHERE оператора SQL.
В этой статье мы обсудили, как вы можете использовать оператор LIKE SQL, чтобы сделать ваши запросы более конкретными. Мы также обсудили, как вы можете использовать оператор NOT LIKE для получения информации, не соответствующей определённым правилам.
Использование критерия Like для поиска данных
Условия или оператор Like используются в запросе для поиска данных, которые соответствуют определенному шаблону. Например, в нашей базе данных есть таблица «Клиенты», как по примеру ниже, и нам нужно найти только клиентов, живущих в городах, названия которых начинаются с «B». Вот как мы создадим запрос и будем использовать условия Like:
«Клиенты»:
На вкладке Создание нажмите кнопку Конструктор запросов.
Нажмите кнопку «Добавить», и таблица «Клиенты» будет добавлена в конструктор запросов.
Дважды щелкните поля «Фамилия» и «Город», чтобы добавить их в сетку конструктора запросов.
В поле «Город» добавьте условия «Нравится B*» и нажмите кнопку «Выполнить».
В результатах запроса будут отбираться только клиенты из названий городов, названия которых начинаются с буквы «B».
Дополнительные информацию об использовании критериев см. в этой теме.
Использование оператора Like в SQL в синтаксис
Если вы предпочитаете синтаксис SQL (язык SQL), вот как это сделать:
Откройте таблицу «Клиенты» и на вкладке «Создание» нажмите кнопку «Конструктор запросов».
На вкладке «Главная» нажмите кнопку «> SQL», а затем введите следующий синтаксис:
SELECT [Last Name], City FROM Customers WHERE City Like “B*”;
Щелкните вкладку запроса правой кнопкой мыши и выберите > «Закрыть».
Дополнительные сведения см. в SQL Access: основные понятия, лексика и синтаксис, а также о том, как изменять SQL для более четкого получения результатов запроса.
Примеры шаблонов условий Like и результатов
Условия или оператор Like удобны при сравнении значения поля с строкным выражением. Следующий пример возвращает данные, которые начинаются с буквы P, за которой идут любая буква от A до F и три цифры:
Вот несколько способов использования like для различных шаблонов:
Если ваша база данных имеет
соответствие, вы увидите
Если в базе данных нет
совпадений, вы увидите
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.







