Назад в блог

~ 12 минут

SQL LIKE: полное руководство с примерами

1771

09.11.2024

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

Вадим Пашаев

Вадим Пашаев

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

SQL LIKE — примеры поиска по строкам + %, _ , WHERE

Содержание

Синтаксис оператора LIKEПримеры:1. Поиск строк, начинающихся на определенные символы2. Поиск строк, заканчивающихся на определенные символы:3. Поиск строк, содержащий определенные символы4. Поиск строк по длинеОсобенности оператора LIKE в SQLiteЧувствительность к регистру с помощью GLOBНастройка регистрозависимости LIKEПример использования LIKE в SQLiteЕще примеры1. Поиск по шаблону с несколькими условиями2. Поиск с исключением с помощью NOT LIKE3. Поиск с использованием символов подстановки в фиксированных позициях4. Поиск на основе определенного паттерна длины5. Использование LIKE с условием диапазона для символов6. Поиск по шаблону в формате даты7. Поиск с учётом нескольких символов на определённых позициях8. Комбинация LIKE с функцией LOWER() для регистрозависимости9. Использование LIKE для поиска на основе частей слов10. Поиск всех строк, содержащих специальные символы

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