Назад в блог

~ 12 минут

Как правильно использовать оператор LIKE в SQL для эффективного поиска данных

114

11/9/2024

Узнайте, как использовать оператор LIKE в SQL для фильтрации и поиска данных. Примеры запросов с объяснениями для новичков и опытных пользователей.

Вадим Пашаев

Вадим Пашаев

Инженер, веб-разработчик, путешественник

Как использовать оператор LIKE в SQL: примеры и советы для фильтрации данных
Регистрация товарных знаков
Craftum - создайте сайт за 15 минут
Домены, хостинг от reg.ru

Привет, путник! Наверняка, если ты здесь, то уже слышал, что оператор LIKE в SQL используется для поиска строк в столбцах, которые соответствуют определенному шаблону. Его также часто применяют в сочетании с операторами SELECT и WHERE для фильтрации данных.

Синтаксис оператора LIKE

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

LIKE поддерживает два основных символа подстановки:

% — соответствует любому количеству символов (включая 0).

_ — соответствует одному символу.

Примеры:

1. Поиск строк, начинающихся на определенные символы

SELECT * FROM employees
WHERE name LIKE 'A%';

Этот запрос выбирает всех сотрудников, чьи имена начинаются на "A".

2. Поиск строк, заканчивающихся на определенные символы:

SELECT * FROM employees
WHERE name LIKE '%ира';

С помощью такого запроса мы получим список список сотрудников, чьи имена заканчиваются на son. Например, Гульжазира.

3. Поиск строк, содержащий определенные символы

SELECT * FROM employees
WHERE name LIKE '%зи%';

Этот запрос выбирает всех сотрудников, чьи имена содержат "зи" в любой позиции. Например, Жазира, Газиза и т.п.

4. Поиск строк по длине

SELECT * FROM employees
WHERE name LIKE '____';

Этим запросом мы выбираем всех сотрудников, чьи имена состоят ровно из 4 символов.

Учтите, что LIKE нечувствителен к регистру в некоторых СУБД, например в MySQL.

Для справки

Особенности оператора LIKE в SQLite

В SQLite по умолчанию этот оператор нечувствителен к регистру. Например, шаблон 'A%' найдет строки, которые начинаются как с 'A', так и с 'a'.

Чувствительность к регистру с помощью GLOB

Если вам нужно учитывать регистр, можно использовать оператор GLOB. Этот оператор работает аналогично LIKE, но чувствителен к регистру:

SELECT * FROM employees
WHERE name GLOB 'A*';

Настройка регистрозависимости LIKE

Чтобы сделать LIKE чувствительным к регистру, можно изменить режим сопоставления. Например, задать кастомную функцию для LIKE, но это более сложный подход, требующий модификации SQLite на уровне конфигурации.

Пример использования LIKE в SQLite

SELECT * FROM employees
WHERE name LIKE 'J%'; -- Поиск всех имен, начинающихся с 'J' или 'j'

Еще примеры

Оператор LIKE можно использовать довольно творчески, особенно в комбинациях с другими SQL функциями и условиями. Вот несколько интересных примеров:

1. Поиск по шаблону с несколькими условиями

Можно комбинировать LIKE с AND и OR для создания более сложных фильтров.

SELECT * FROM products
WHERE name LIKE 'A%' OR description LIKE '%спец%' AND price > 100;

Этот запрос выбирает все продукты, название которых начинается с буквы "A" или содержит слово "спец" в описании, и цена которых больше 100.

2. Поиск с исключением с помощью NOT LIKE

Если вам нужно исключить строки, которые соответствуют шаблону, используйте NOT LIKE.

SELECT * FROM users
WHERE email NOT LIKE '%@mail.ru';

Этот запрос выберет всех пользователей, чьи email-адреса не заканчиваются на @mail.ru.

3. Поиск с использованием символов подстановки в фиксированных позициях

Например, вы ищете номера телефонов, у которых третья и четвертая цифры — это "45".

SELECT * FROM contacts
WHERE phone_number LIKE '__45%';

Этот запрос найдет все номера телефонов, где третья и четвертая цифры — "45", независимо от других цифр.

4. Поиск на основе определенного паттерна длины

Используя символ _, можно найти строки с конкретным количеством символов. Например, найти все коды, которые имеют ровно 8 символов.

SELECT * FROM transactions
WHERE transaction_code LIKE '________';

Этот запрос выберет все транзакции, у которых код состоит из ровно 8 символов.

5. Использование LIKE с условием диапазона для символов

Некоторые СУБД поддерживают диапазоны с LIKE. В SQLite это возможно через GLOB. Например, вы ищете имена, начинающиеся с букв от "A" до "M":

SELECT * FROM employees
WHERE name GLOB '[A-M]*';

Этот запрос выберет всех сотрудников, чьи имена начинаются на буквы от "A" до "M".

6. Поиск по шаблону в формате даты

Если дата хранится как текст, можно использовать LIKE для поиска по конкретным дням, месяцам или годам.

SELECT * FROM events
WHERE event_date LIKE '2023-12-%';

Этот запрос выберет все события, которые происходят в декабре 2023 года.

7. Поиск с учётом нескольких символов на определённых позициях

Например, вам нужно найти почтовые индексы, начинающиеся с 123, но заканчивающиеся на любые две цифры.

SELECT * FROM addresses
WHERE postal_code LIKE '123__';

Этот запрос выберет все почтовые индексы, которые начинаются на "123" и имеют ровно пять символов.

8. Комбинация LIKE с функцией LOWER() для регистрозависимости

Для чувствительности к регистру в SQLite можно использовать LOWER() или UPPER():

SELECT * FROM products
WHERE LOWER(name) LIKE 'a%';

Этот запрос выбирает все продукты, название которых начинается с "a" (без учета регистра), независимо от того, написаны ли они в верхнем или нижнем регистре.

9. Использование LIKE для поиска на основе частей слов

Можно использовать LIKE для поиска в середине текста. Например, найти все описания, содержащие слова с корнем "graph".

SELECT * FROM books
WHERE description LIKE '%graph%';

Этот запрос выберет все книги, в описаниях которых встречаются такие слова, как "graph", "graphics", "paragraph", и т. д.

10. Поиск всех строк, содержащих специальные символы

Например, найти все записи, которые содержат символ % (если, например, это символ для обозначения скидки):

SELECT * FROM promotions
WHERE description LIKE '%\%%' ESCAPE '\';

Этот запрос выберет все записи с % в описании, используя ESCAPE для обозначения % как символа, а не подстановки.

Буду рад если этот подробный мануал поможет тебе понять как использовать оператор LIKE в твоих проектах! Удачи в кодинге!

Подписаться на рассылку

Получите лучшие новости по веб-разработке и AI

Подписаться на рассылку

Получите лучшие новости по веб-разработке и AI

Оценка проекта

Хотите быструю оценку Вашего проекта?

Василий Иванов
Максим Насенников
Виктория Мальцева
Vadim Pashaev

Заполните форму справа и наша команда экспертов поможет найти для Вас оптимальное решение вашей идеи или задачи

Есть интересная идея?

И вы очень хотите ее реализовать, пишите нам и получите подробное коммерческое предложение и быструю реализацию