Руководство по SQL. Предикат LIKE.
Для сравнения символьных строк на схожесть с определённым шаблоном в языке структурированных запросов SQL используется предикат LIKE. Существует два вида шаблонов, которые используются вместе с LIKE:
- Символ процента – ‘%’
- Символ подчеркивания – ‘_’
Символ процента обозначает один или несколько символов, а знак подчёркивания – одно число, или символ. Мы можем использовать символы в различных комбинациях.
Общий вид запроса с использованием предиката LIKE имеет следующий вид:
SELECT FROM имя талицы WHERE имя_колонки LIKE '%XXXX' или SELECT FROM имя талицы WHERE имя_колонки LIKE '%XXXX%' или SELECT FROM имя талицы WHERE имя_колонки LIKE'_XXXX'
В данном примере ХХХХ представлены символьными строками.
Мы также можем использовать операторы AND/OR для комбинирования нескольких условий.
Предположим, что у нас есть таблица developers, которая содержит следующие записи:
+----+-------------------+------------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+-------------------+------------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2500 | | 2 | Peter Romanenko | Java | 3 | 3500 | | 3 | Andrei Komarov | JavaScript | 3 | 2500 | | 4 | Konstantin Geiko | C# | 2 | 2000 | | 5 | Asya Suleimanova | UI/UX | 2 | 1800 | +----+-------------------+------------+------------+--------+
Допустим, что нам необходимо получить всех разработчиков, которые содержат в специальности последовательность символов ‘java’.
Для этого нам необходимо использовать следующую команду:
mysql> SELECT * FROM developers WHERE SPECIALTY LIKE '%java%';
В результате выполнения данного запроса мы получим следующий результат:
+----+-------------------+------------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+-------------------+------------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2500 | | 2 | Peter Romanenko | Java | 3 | 3500 | | 3 | Andrei Komarov | JavaScript | 3 | 2500 | +----+-------------------+------------+------------+--------+
Мы можем создавать любые шаблоны подстановки в зависимости от наших задач.
На этом мы заканчиваем изучение предиката LIKE.
В следующей статье мы рассмотрим, как получить определённое число первых записей из таблицы.
Оператор 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 |
SQL — Оператор LIKE
Оператор LIKE используется в предложении WHERE для поиска заданного шаблона в столбце.
В сочетании с оператором LIKE используются два подстановочных знака:
- % — Знак процента представляет нулевой, один или несколько символов
- _ — Подчеркнутый символ представляет собой один символ
SELECT column1, column2, . FROM table_name WHERE columnN LIKE pattern;
| Выражение | Описание |
| WHERE name LIKE ‘text%’ | Находит любые значения, начинающиеся с «text» |
| WHERE name LIKE ‘%text’ | Находит любые значения, заканчивающиеся на «text» |
| WHERE name LIKE ‘%text%’ | Находит любые значения, которые имеют «text» в любой позиции |
| WHERE name LIKE ‘_text%’ | Находит любые значения, которые имеют «text» во второй позиции |
| WHERE name LIKE ‘text_%_%’ | Находит любые значения, начинающиеся с «text» и длиной не менее 3 символов |
| WHERE name LIKE ‘text%data’ | Находит любые значения, начинающиеся с «text» и заканчивающиеся на «data» |
Примеры SQL LIKE
Следующий оператор SQL выбирает всех пользователей с именем name, начинающимся с «Т»:
Пример:
SELECT * FROM users WHERE name LIKE 'Т%';
Следующий оператор SQL выбирает всех пользователей с именем name, заканчивающимся на «м»:
Пример:
SELECT * FROM users WHERE name LIKE '%м';
Следующий оператор SQL выбирает всех пользователем с именем name, которое имеет «text» в любой позиции:
Пример:
SELECT * FROM users WHERE name LIKE '%text%';
Следующий оператор SQL выбирает всех пользователей с именем name, которое имеет «text» во второй позиции:
Пример:
SELECT * FROM users WHERE name LIKE '_text%';
Следующий оператор SQL выбирает всех пользователей с именем name, начинающимся с «Т» и длиной не менее 3 символов:
Пример:
SELECT * FROM users WHERE name LIKE 'Т_%_%';
Следующий оператор SQL выбирает всех пользователей с именем name, которое начинается с «Т» и заканчивается на «м»:
Пример:
SELECT * FROM users WHERE name LIKE 'Т%м';
Следующий оператор SQL выбирает всех пользователей с именем name, которое НЕ начинается с «Т»:
Пример:
SELECT * FROM users WHERE name NOT LIKE 'Т%';
SQL условие LIKE
В этом учебном материале вы узнаете, как использовать SQL условие LIKE (для сопоставления с шаблоном) с синтаксисом и примерами.
Описание
SQL условие LIKE позволяет использовать подстановочные символы для сопоставления с шаблоном в запросе. Условие LIKE используется в предложении WHERE оператора SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис для условия LIKE в SQL.
expression LIKE pattern [ ESCAPE ‘escapecharacter’ ]
Параметры или аргумент
expression Символьное выражение, такое как поле или столбец pattern Символьное выражение, которое содержит сопоставление с шаблоном. Подстановочные символы, которые вы можете выбрать:
| Символ | Объяснение |
|---|---|
| % | Позволяет сопоставить любую строку любой длины (включая нулевую длину) |
| _ | Позволяет сопоставить одиночный символ |
ESCAPE ‘escapecharacter’ Необязательный. Это позволяет вам сопоставлять шаблоны с литеральными подстановочными символами, такими как % или _ .
Пример — использование подстановочного символа % в условии LIKE
Давайте рассмотрим, как подстановочный символ % работает в SQL условии LIKE. Помните, что подстановочный символ % соответствует любой строке любой длины (включая нулевую длину).
В этом первом примере мы хотим найти все записи в таблице customers , где last_name клиента начинается с ‘C’.
В этом примере у нас есть таблица 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 |
Введите следующий SQL оператор.
