Для чего используется оператор LIKE в SQL?

«Для чего используется оператор LIKE в SQL?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

LIKE — это оператор в SQL, используемый для поиска строк в столбце по заданному шаблону (pattern matching), а не по точному совпадению.

Синтаксис и специальные символы:

  • % (знак процента): Соответствует любой последовательности из нуля или более символов.
  • _ (нижнее подчёркивание): Соответствует ровно одному любому символу.

Примеры запросов:

-- Найти всех, чьё имя начинается на 'Ан'
SELECT * FROM users WHERE name LIKE 'Ан%';

-- Найти email-адреса в домене '@example.com'
SELECT * FROM contacts WHERE email LIKE '%@example.com';

-- Найти коды из 5 символов, где первые три 'ABC', а последний 'Z'
SELECT * FROM products WHERE product_code LIKE 'ABC_Z';

-- Найти названия, содержащие подстроку 'test' в любом месте
SELECT * FROM documents WHERE title LIKE '%test%';

Важные замечания:

  • Производительность: Использование LIKE, особенно с шаблоном, начинающимся на % (например, '%строка'), может быть медленным на больших таблицах, так как часто не позволяет использовать обычные индексы. Для полнотекстового поиска существуют специализированные средства (например, полнотекстовые индексы).
  • Регистр: Поведение зависит от СУБД и настроек collation (сравнения). В PostgreSQL по умолчанию регистронезависимо, в SQLite — зависит от настроек, в MySQL можно использовать LIKE BINARY для регистрозависимого поиска.
  • Экранирование: Для поиска самих символов % или _ их необходимо экранировать (способ зависит от СУБД, часто с помощью ESCAPE).