← Все вопросы

Как искать по части слова в SQL через LIKE?

Задан 25 месяцев назад1.2к просмотров2 ответа
6

Мне нужно найти всех учеников, чьё имя начинается на «А». Или у кого в названии города есть слово «город». Точное равенство = тут не подходит. Как искать по куску слова?

2 ответа

11
✓ Принятый ответ — помог автору

Для поиска по части слова есть оператор LIKE и два спецсимвола-шаблона:

  • % — «любое количество любых символов» (хоть ноль, хоть много);
  • _ — «ровно один любой символ».

Имена, которые начинаются на «А»:

SELECT * FROM students WHERE name LIKE 'А%';

(буква А, а дальше что угодно)

Города, где где-то внутри есть слово «город»:

SELECT * FROM students WHERE city LIKE '%город%';

(что угодно, потом «город», потом что угодно)

Имена, которые заканчиваются на «я»:

SELECT * FROM students WHERE name LIKE '%я';

Запомни: % — «любой хвост/кусок», _ — «один символ». LIKE используют, когда нужен поиск «содержит / начинается / заканчивается», а не точное совпадение.

4

Маленький нюанс: в одних базах LIKE учитывает регистр букв ('А%' не найдёт 'аня'), в других — нет. Если хочешь искать без учёта регистра, в PostgreSQL есть ILIKE, а в других базах оборачивают столбец в LOWER(). Для старта же просто помни, что регистр может влиять.

Ваш ответ

Войдите, чтобы ответить на вопрос.