SQL LIKEОператоры
Оператор LIKE используется для поиска заданного шаблона в столбце в предложении WHERE.
LIKEЭтот оператор — ключевое слово в SQL, используемое дляWHEREвыполнения нечётких запросов в предложении. Он позволяет выбирать данные на основе сопоставления с шаблоном и обычно используется вместе с%и_подстановочными знаками.
Синтаксис SQL LIKE
SELECT column1, column2, ... FROM table_name WHERE column_name LIKE pattern;
Описание параметра:
- column1, column2, ...: Имя (имена) полей для выбора; может быть несколько полей. Если имя поля не указано, будут выбраны все поля.
- table_name: Имя таблицы для запроса.
- column: Имя поля для поиска.
- pattern: Шаблон поиска.
Подстановочные знаки
%: Совпадает с любым количеством символов (включая ноль символов)._: Совпадает с одним символом.
Примеры
Предположим, у нас есть таблица с именем Products со следующими данными:
| ProductID | ProductName | Категория |
|---|---|---|
| 1 | iPhone 12 | Электроника |
| 2 | Samsung Galaxy S21 | Электроника |
| 3 | Dell XPS 13 | Электроника |
| 4 | Nike Air Zoom | Обувь |
| 5 | Adidas Ultraboost | Обувь |
| 6 | Sony PlayStation 5 | Электроника |
Используйте%подстановочный знак, чтобы найти все товары, начинающиеся с "iPhone":
SELECT ProductName, Category FROM Products WHERE ProductName LIKE 'iPhone%';
Возвращает следующие данные:
| ProductName | Категория |
|---|---|
| iPhone 12 | Электроника |
Используйте_подстановочный знак, чтобы найти все товары, в названии которых "e" является вторым символом:
SELECT ProductName, Category FROM Products WHERE ProductName LIKE '_e%';
Возвращает следующие данные:
| ProductName | Категория |
|---|---|
| Dell XPS 13 | Электроника |
Объедините%и_подстановочный знак, чтобы найти все товары, в названии которых содержится "Zoom":
SELECT ProductName, Category FROM Products WHERE ProductName LIKE '%Zoom%';
Возвращает следующие данные:
| ProductName | Категория |
|---|---|
| Nike Air Zoom | Обувь |
Демонстрационная база данных
В этом руководстве мы будем использовать образец базы данных EXAMPLE.
Ниже приведена выборка из таблицы "Websites":
mysql> SELECT * FROM Websites; +----+---------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+---------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Example | http://www.example.com/ | 5000 | USA | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Примеры оператора SQL LIKE
Следующая инструкция SQL выбирает всех клиентов, чьё имя начинается с буквы "G":
Пример
WHERE name LIKE 'G%';
Результат вывода выполнения:
Совет:Символ "%" используется для определения подстановочных знаков (букв по умолчанию) перед шаблоном и после него. Вы узнаете больше о подстановочных знаках в следующей главе.
Следующая инструкция SQL выбирает всех клиентов, чьё имя заканчивается на букву "k":
Пример
WHERE name LIKE '%k';
Результат вывода выполнения:
Следующая инструкция SQL выбирает всех клиентов, чьё имя содержит шаблон "oo":
Пример
WHERE name LIKE '%oo%';
Результат вывода выполнения:
Используя ключевое слово NOT, можно выбирать записи, не соответствующие шаблону.
Следующая SQL-инструкция выбирает всех клиентов, имя которых не содержит шаблон "oo":
Пример
WHERE name NOT LIKE '%oo%';
Результат вывода выполнения: