Комментарии (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 при использовании collationutf8mb4_unicode_ciпоиск будет регистронезависимым ('apple'найдет и'Apple'). В PostgreSQL по умолчанию поиск регистрозависимый, и для регистронезависимого поиска часто используютILIKE. - Экранирование спецсимволов: Если вам нужно найти сам символ
%или_, его необходимо экранировать. Способ экранирования зависит от СУБД. Часто используется ключевое словоESCAPE.-- Поиск значений, содержащих символ '_' SELECT * FROM logs WHERE message LIKE '%\_%' ESCAPE '\'; - Производительность: Использование
LIKEс шаблоном, начинающимся с%(например,'%слово'), может быть медленным на больших таблицах, так как оно предотвращает использование обычных индексов (не по всем столбцам создается полнотекстовый индекс). Для полнотекстового поиска лучше использовать специализированные инструменты, такие как FULLTEXT-индексы в MySQL илиto_tsvectorв PostgreSQL.
С точки зрения QA Engineer
Понимание оператора LIKE критически важно для тестировщика по нескольким причинам:
- Валидация поиска и фильтрации: Большинство веб- и мобильных приложений имеют функции поиска. Тестируя их, необходимо проверять не только точные совпадения, но и частичные, используя оба wildcard-символа.
- Тестирование граничных случаев и негативных сценариев:
* Поиск с пустым шаблоном (`LIKE ''`).
* Поиск строки, полностью состоящей из wildcard-символов (`LIKE '%%'` — вернет все строки, где столбец не `NULL`).
* Поиск с учетом регистра, если это заявлено в требованиях.
* Проверка экранирования: что будет, если в строке поиска ввести символы `%` или `_` — должны ли они интерпретироваться как шаблоны или как обычные символы?
- Анализ данных и отладка: При исследовании базы данных во время расследования дефекта
LIKE— незаменимый инструмент для быстрого поиска записей по косвенным признакам. - Понимание требований к данным: Если в бизнес-требованиях указано "код должен соответствовать маске
XXX-000-AA", тестировщик должен понимать, что для проверки этого правила в SQL может использоваться условиеWHERE code LIKE '___-___-__'.
Таким образом, оператор LIKE — это мощный и фундаментальный инструмент в SQL, знание которого необходимо не только разработчикам, но и QA-инженерам для эффективного тестирования функций поиска, анализа данных и глубокого понимания логики работы приложения с данными.