← Назад к вопросам

Что такое like?

1.0 Junior🔥 183 комментариев
#Базы данных и SQL

Комментарии (3)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое оператор LIKE в SQL?

LIKE — это оператор сравнения строк в SQL, который используется для поиска указанного шаблона в столбце. В отличие от оператора =, который ищет точное совпадение, LIKE позволяет осуществлять частичный поиск с использованием специальных символов-шаблонов (wildcards). Это особенно полезно при работе с неполными, неточными или изменчивыми данными.

Основные символы-шаблоны (wildcards)

  • % (знак процента): Представляет собой ноль, один или несколько произвольных символов. Это наиболее часто используемый wildcard.
    *   `'А%'` — Находит любые значения, которые начинаются с "А".
    *   `'%тест%'` — Находит любые значения, которые содержат подстроку "тест" в любой позиции.
    *   `'%ов'` — Находит любые значения, которые заканчиваются на "ов".

  • _ (нижнее подчеркивание): Представляет собой ровно один произвольный символ.
    *   `'С_окол'` — Найдет "Сокол", "Сакол", но не "Стокол" или "Сокол".
    *   `'Test_'` — Найдет "Test1", "TestA", но не "Test" или "Test12".

Практическое применение в запросах

-- Найти всех сотрудников, чьи имена начинаются на 'Иван'
SELECT * FROM employees WHERE first_name LIKE 'Иван%';

-- Найти все товары, в названии которых есть слово 'профессиональный'
SELECT * FROM products WHERE name LIKE '%профессиональный%';

-- Найти пользователей с email в домене 'gmail.com'
SELECT * FROM users WHERE email LIKE '%@gmail.com';

-- Найти файлы с расширением '.jpg'
SELECT * FROM files WHERE filename LIKE '%.jpg';

-- Найти коды, соответствующие шаблону 'АБВ-123-XX', где XX — любые две цифры
SELECT * FROM codes WHERE code LIKE 'АБВ-123-__';

Особенности использования и важные замечания

  • Регистрозависимость: Поведение оператора LIKE (регистрозависимый поиск или нет) зависит от коллации (collation) базы данных и настроек сервера. Например, в MySQL при использовании collation utf8mb4_unicode_ci поиск будет регистронезависимым ('apple' найдет и 'Apple'). В PostgreSQL по умолчанию поиск регистрозависимый, и для регистронезависимого поиска часто используют ILIKE.
  • Экранирование спецсимволов: Если вам нужно найти сам символ % или _, его необходимо экранировать. Способ экранирования зависит от СУБД. Часто используется ключевое слово ESCAPE.
    -- Поиск значений, содержащих символ '_'
    SELECT * FROM logs WHERE message LIKE '%\_%' ESCAPE '\';
    
  • Производительность: Использование LIKE с шаблоном, начинающимся с % (например, '%слово'), может быть медленным на больших таблицах, так как оно предотвращает использование обычных индексов (не по всем столбцам создается полнотекстовый индекс). Для полнотекстового поиска лучше использовать специализированные инструменты, такие как FULLTEXT-индексы в MySQL или to_tsvector в PostgreSQL.

С точки зрения QA Engineer

Понимание оператора LIKE критически важно для тестировщика по нескольким причинам:

  1. Валидация поиска и фильтрации: Большинство веб- и мобильных приложений имеют функции поиска. Тестируя их, необходимо проверять не только точные совпадения, но и частичные, используя оба wildcard-символа.
  2. Тестирование граничных случаев и негативных сценариев:
    *   Поиск с пустым шаблоном (`LIKE ''`).
    *   Поиск строки, полностью состоящей из wildcard-символов (`LIKE '%%'` — вернет все строки, где столбец не `NULL`).
    *   Поиск с учетом регистра, если это заявлено в требованиях.
    *   Проверка экранирования: что будет, если в строке поиска ввести символы `%` или `_` — должны ли они интерпретироваться как шаблоны или как обычные символы?
  1. Анализ данных и отладка: При исследовании базы данных во время расследования дефекта LIKE — незаменимый инструмент для быстрого поиска записей по косвенным признакам.
  2. Понимание требований к данным: Если в бизнес-требованиях указано "код должен соответствовать маске XXX-000-AA", тестировщик должен понимать, что для проверки этого правила в SQL может использоваться условие WHERE code LIKE '___-___-__'.

Таким образом, оператор LIKE — это мощный и фундаментальный инструмент в SQL, знание которого необходимо не только разработчикам, но и QA-инженерам для эффективного тестирования функций поиска, анализа данных и глубокого понимания логики работы приложения с данными.

Что такое like? | PrepBro