Фильмы со словом «love» в названии
Задача
Ты аналитик в сети видеопроката. К Дню всех влюблённых маркетинг собирает тематическую подборку и просит: «Дай все фильмы, у которых в названии есть слово love — повесим их на главную под баннер про романтику».
Верни film_id и title всех подходящих фильмов. Регистр в названии заранее неизвестен, так что искать надо и Love, и LOVE, и love.
Схема данных
Учебная база проката dvdrental, одна таблица:
film(film_id, title, ...)— каталог фильмов;title— текстовое название.
Решение
SELECT film_id, title
FROM film
WHERE title ILIKE '%love%'
ORDER BY title;
Разбор
Ключевая деталь — поиск по подстроке. Знак % в шаблоне означает «любое количество любых символов», так что '%love%' ловит слово в любом месте названия: и в начале, и в середине, и в конце.
Почему ILIKE, а не LIKE? Обычный LIKE в PostgreSQL чувствителен к регистру: '%love%' не найдёт фильм Lovely In The Saddle. ILIKE — это регистронезависимая версия (буква I от insensitive), она уравнивает L и l. Тот же эффект даёт LOWER(title) LIKE '%love%', но ILIKE короче и читается честнее. На собеседовании про этот ILIKE любят спросить: в стандартном SQL его нет, это расширение PostgreSQL — в MySQL пришлось бы городить LOWER().
Осторожно с ловушкой: '%love%' найдёт не только слово «love», но и подстроку внутри других слов — например Gloves или Clover, если бы такие названия были. Если нужно именно отдельное слово, шаблон усложняется до регулярного выражения (title ~* '\ylove\y'), но для маркетинговой подборки «где-то мелькает love» простого ILIKE достаточно — и это правильный уровень строгости для задачи.
Если бы фильтр был по числовому полю, а не по тексту, никакой LIKE не понадобился бы — там работают обычные сравнения, как в задаче «сколько фильмов длиннее двух часов».
Ожидаемый результат
film_id | title
--- | ---
374 | Graffiti Love
448 | Idaho Love
449 | Identity Lover
458 | Indian Love
511 | Lawrence Love
535 | Love Suicides
536 | Lovely Jingle
537 | Lover Truman
538 | Loverboy Attacks
852 | Strangelove Desire
Прорешай такие задачи сам
Читать разбор полезно, а настоящая прокачка — самому писать запросы и получать обратную связь. В симуляторе живая база и проверка запросов, лёгкий режим — бесплатно.
Прорешать в бесплатной песочнице