Оператор SQL LIKE
Оператор SQL LIKE устанавливает соответствие символьной строки с шаблоном.
Оператор SQL LIKE имеет следующий синтаксис:
expression [ NOT ] LIKE pattern
где, expression — любое символьное выражение
pattern — шаблон, по которому будет происходить проверка выражения expression. Шаблон может включать в себя следующие спец. символы:
Символ | Описание | Примеры |
% | Строка любой длины | Пример 1 |
_ | Любой одиночный символ | Пример 2 |
[] | Диапазон или последовательность символов |
Пример 3 |
[^] | Исключающий диапазон или последовательность символов |
Пример 4 |
Примеры оператора SQL LIKE: Имеется следующая таблица Universities :
ID | UniversityName | Students | Faculties | Professores | Location | Site |
1 | Perm State National Research University | 12400 | 12 | 1229 | Perm | psu.ru |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru |
4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu.ru |
5 | Higher School of Economics | 20335 | 12 | 1615 | Moscow | hse.ru |
6 | Ural Federal University | 57000 | 19 | 5640 | Yekaterinburg | urfu.ru |
7 | National Research Nuclear University | 8600 | 10 | 936 | Moscow | mephi.ru |
Пример 1. С помощью оператора SQL LIKE вывести записи университетов, имеющих в своем названии слово «State»:
SELECT * FROM Universities WHERE UniversityName LIKE '%State%'
ID | UniversityName | Students | Faculties | Professores | Location | Site |
1 | Perm State National Research University | 12400 | 12 | 1229 | Perm | psu.ru |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru |
4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu.ru |
В этом примере, в качестве шаблона оператора SQL LIKE послужил ‘%State%’. Исходя из условия задачи, слово State может стоять в названии где угодно, поэтому оно обрамлено символом «%», обозначающим строку любой длины перед и после слова.
Пример 2. С помощью оператора SQL LIKE вывести записи университетов, доменное имя сайта которых содержит 4 символа (за исключением домена .ru):
SELECT * FROM Universities WHERE Site LIKE '____.ru'
ID | UniversityName | Students | Faculties | Professores | Location | Site |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
6 | Ural Federal University | 57000 | 19 | 5640 | Yekaterinburg | urfu.ru |
Пример 3. С помощью оператора SQL LIKE вывести записи университетов, первая буква доменного имени сайта которых содержит буквы из диапазона [k-o]:
SELECT * FROM Universities WHERE Site LIKE '[k-o]%'
ID | UniversityName | Students | Faculties | Professores | Location | Site |
3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru |
4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu.ru |
7 | National Research Nuclear University | 8600 | 10 | 936 | Moscow | mephi.ru |
Пример 4. С помощью оператора SQL LIKE вывести записи университетов, вторая буква названия города которых, не входит в диапазон [e-o]:
SELECT * FROM Universities WHERE Location LIKE '_[^e-o]%'
ID | UniversityName | Students | Faculties | Professores | Location | Site |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
Оператор LIKE SQL: примеры и синтаксис
LIKE в SQL выполняет функцию оператора, который помогает фильтровать результаты. Показываем, как правильно использовать оператор LIKE.
LIKE SQL — это оператор, который используется для поиска строк, содержащих определённый шаблон символов. Подробнее о нём читайте в нашей статье.
- Синтаксис LIKE SQL
- Примеры использования LIKE SQL
Синтаксис LIKE SQL
Использовать оператор LIKE в SQL очень просто: достаточно прописать стандартную команду выбора SELECT * FROM и задать условие через WHERE, где и будет использован оператор LIKE.
Шаблон LIKE SQL:
SELECT column1, column2, . FROM table_nameWHERE columnN LIKE pattern;
Существует два подстановочных знака, которые используются в сочетании с оператором LIKE SQL:
- % — знак процента представляет собой ноль, один или несколько символов;
- _ — подчёркивание представляет собой один символ.
Примеры использования LIKE SQL
Рассмотрим SQL LIKE примеры. Представим, что вы хотите найти все имена, начинающиеся с буквы J. Для этого достаточно использовать следующий запрос:
SELECT * FROM table_name WHERE name LIKE 'J%';
В данном случае символ % используется для указания любого количества символов после J. Таким образом, запрос найдёт все имена, которые начинаются с буквы J, независимо от того, какие символы следуют за ней.
Ещё один пример — поиск всех адресов электронной почты, содержащих слово gmail. Для этого можно использовать следующий запрос:
SELECT * FROM table_name WHERE email LIKE '%gmail%';
Здесь символы % используются для указания, что слово gmail может быть в любом месте в адресе электронной почты.
Также можно использовать символ _ для указания одного символа. Например, запрос ниже найдет все имена, состоящие из шести символов. Эти имена должны начинаться с буквы J и заканчиваться буквой n:
SELECT * FROM table_name WHERE name LIKE 'J____n';
Здесь каждый символ _ указывает на любой один символ.
Иногда символы % и _ сами могут быть частью искомой строки. В таких случаях их нужно экранировать. Например, запрос ниже найдет все имена, содержащие символ %:
SELECT * FROM table_name WHERE name LIKE '%\%%';
Это было короткое руководство по работе с SQL LIKE. Также вы можете почитать о других основных командах SQL.
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Что делает спецсимвол в паре с оператором like
like- это оператор, который используется для проверки соответствия шаблону; т. е. он сравнивает значения столбца с заданным шаблоном. Тип данных такого столбца может быть любым символьным типом или датой. Общая форма оператора like:
column [not] like ‘pattern’
Параметр pattern может быть константой типа строки или даты, либо это может быть выражение (включающее и столбцы таблиц), которое должно быть совместимым с типом данных соответствующего столбца. Для заданного столбца сравнение между значением в строке и шаблоном вычисляется в истину, если значение столбца соответствует выражению шаблона.
Некоторые символы в шаблоне, называемые шаблонными или групповыми символами, имеют специфическую интерпретацию. Два из этих символа:
♦ % (знак процента) задает любую последовательность из нуля или более символов;
♦ _ (подчеркивание) задает любой одиночный символ.
В примере 6.17 показано использование шаблонных символов % и _.
В дополнение к символам процента и подчеркивания Transact-SQL поддерживает и другие символы, которые имеют специальное значение при использовании в операторе like. Эти символы ([,] и Л) демонстрируются в примерах 6.18 и 6.19.
Как показано в примере 6.18, квадратные скобки [ ] заключают в себе диапазон или список символов. Порядок, в котором символы появляются в диапазоне, определяется порядком сортировки, который был задан при инсталляции системы.
Символ Л задает отрицание диапазона или списка символов. Этот символ имеет такое значение только при паре квадратных скобок, как показано в примере 6.19.
Любой из шаблонных символов (%, _, [, ] или А), заключенный в квадратные скобки, остается обычным символом. Такая же возможность существует при использовании опции escape. Исходя из этого, оба оператора select в примере 6.21 имеют одно и то же значение.
Оба оператора select отыскивают символ подчеркивания как фактический символ в столбце project name. В первом операторе select этот поиск задается заключением символа подчеркивания в квадратные скобки. Второй оператор select использует некий символ (в примере 6.21 это символ !) в качестве escape-символа. Escape-символ перекрывает значение символа подчеркивания как шаблонного символа и возвращает его интерпретацию как обычного символа. (Результат содержит ноль строк, потому что не существует проекта, в имени которого присутствовал бы символ подчеркивания.)
Что делает спецсимвол в паре с оператором like
Оператор LIKE используется при условных запросах, когда мы хотим узнать соответствует ли строка определённому шаблону.
Например, у нас есть таблица Users , в которой есть поле email :
MySQLSELECT name, email FROM Users;
name Bruce Willis barjam@hotmail.com George Clooney tellis@me.com Kevin Costner metzzo@hotmail.com Samuel L. Jackson moonlapse@outlook.com Kurt Russell gator@live.com Допустим, мы хотим найти всех пользователей, чья почта лежит в домене второго уровня «hotmail». Т.е. нужно отобрать только те записи, что отвечают условию:
- после символа «@» следует «hotmail»
- после «hotmail» следует символ «.» и далее любая последовательность символов
Для таких нетривиальных поисков по строковым полям и нужен оператор LIKE .
MySQL... WHERE поле_таблицы [NOT] LIKE шаблон_строки
Шаблон может включать следующие специальные символы:
Символ Описание % Последовательность любых символов (число символов в последовательности может быть от 0 и более) _ Любой единичный символ Так наш запрос на поиск пользователей в домене «hotmail» может выглядеть следующим образом:
MySQLSELECT name, email FROM Users WHERE email LIKE '%@hotmail.%'
name Bruce Willis barjam@hotmail.com Kevin Costner metzzo@hotmail.com Jennifer Lopez barjam@hotmail.com Harrison Ford kostas@hotmail.com Michael Douglas timtroyr@hotmail.com Catherine Zeta-Jones flakeg@hotmail.com MySQL... WHERE поле_таблицы LIKE 'text%'
MySQL... WHERE поле_таблицы LIKE '%text'
MySQL... WHERE поле_таблицы LIKE '_ext'
MySQL... WHERE поле_таблицы LIKE 'begin%end'
В MySQL по умолчанию шаблоны не чувствительны к регистру
ESCAPE-символ используется для экранирования специальных символов ( % и \ ). В случае если вам нужно найти строки, вы можете использовать ESCAPE-символ.
Например, вы хотите получить идентификаторы задач, прогресс которых равен 3%:
MySQLSELECT job_id FROM Jobs WHERE progress LIKE '3!%' ESCAPE '!';
Если бы мы не экранировали трафаретный символ, то в выборку попало бы всё, что начинается на 3.