Как искать по части слова в SQL через LIKE?
Мне нужно найти всех учеников, чьё имя начинается на «А». Или у кого в названии города есть слово «город». Точное равенство = тут не подходит. Как искать по куску слова?
2 ответа
Для поиска по части слова есть оператор LIKE и два спецсимвола-шаблона:
%— «любое количество любых символов» (хоть ноль, хоть много);_— «ровно один любой символ».
Имена, которые начинаются на «А»:
SELECT * FROM students WHERE name LIKE 'А%';
(буква А, а дальше что угодно)
Города, где где-то внутри есть слово «город»:
SELECT * FROM students WHERE city LIKE '%город%';
(что угодно, потом «город», потом что угодно)
Имена, которые заканчиваются на «я»:
SELECT * FROM students WHERE name LIKE '%я';
Запомни: % — «любой хвост/кусок», _ — «один символ». LIKE используют, когда нужен поиск «содержит / начинается / заканчивается», а не точное совпадение.
Маленький нюанс: в одних базах LIKE учитывает регистр букв ('А%' не найдёт 'аня'), в других — нет. Если хочешь искать без учёта регистра, в PostgreSQL есть ILIKE, а в других базах оборачивают столбец в LOWER(). Для старта же просто помни, что регистр может влиять.