~ 12 минут
SQL LIKE: полное руководство с примерами
1771
09.11.2024
Как использовать LIKE в SQL для поиска текста. Примеры с %, _, WHERE, NOT LIKE для MySQL.


Содержание
Привет, путник! Наверняка, если ты здесь, то уже слышал, что оператор 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