Шаблоны LIKE и подстановочные символы
Используйте LIKE с подстановочными символами % и _, учитывайте регистр и предпочитайте ILIKE в PostgreSQL для поиска без учёта регистра
«Шаблоны LIKE и подстановочные символы» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.
Что делает LIKE
LIKE сопоставляет строку с шаблоном. Доступны два подстановочных символа:
%— любая последовательность символов, включая пустую_— ровно один символ
Простые примеры
Сопоставление по префиксу, суффиксу и подстроке:
SELECT email FROM users WHERE email LIKE 'a%'; -- starts with a
SELECT email FROM users WHERE email LIKE '%@gmail.com'; -- ends with @gmail.com
SELECT email FROM users WHERE email LIKE '%admin%'; -- contains adminПодстановочные символы для одного знака
_ соответствует ровно одному символу. Это удобно для кодов фиксированной длины:
-- 6-char SKU starting with A:
SELECT * FROM products WHERE sku LIKE 'A_____';
-- US zip+4:
SELECT * FROM addresses WHERE zip LIKE '_____-____';Чувствительность к регистру
По умолчанию LIKE в PostgreSQL учитывает регистр. Для сопоставления без учёта регистра используйте ILIKE:
SELECT * FROM users WHERE email LIKE '%@gmail.com'; -- ✗ misses @GMAIL.com
SELECT * FROM users WHERE email ILIKE '%@gmail.com'; -- ✓Экранирование подстановочных символов
Чтобы сопоставить буквальный % или _, экранируйте его обратной косой чертой или задайте собственный символ ESCAPE:
-- Match strings that contain '50%':
SELECT * FROM coupons WHERE code LIKE '%50\%%';
-- Custom escape character:
SELECT * FROM coupons WHERE code LIKE '%50!%%' ESCAPE '!';LIKE и индексы
Индекс B-tree помогает только с шаблонами по префиксу:
-- Uses index (prefix is fixed):
SELECT * FROM users WHERE email LIKE 'alice%';
-- Does NOT use a normal index (leading wildcard):
SELECT * FROM users WHERE email LIKE '%example.com';Исправление поиска с начальным подстановочным символом
Для поиска по шаблону "%example%" используйте триграммный индекс GIN (pg_trgm) — он рассматривается в разделе «Расширенная индексация».
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX users_email_trgm_idx ON users USING GIN (email gin_trgm_ops);
SELECT * FROM users WHERE email LIKE '%example%'; -- now indexableNOT LIKE
Отрицание сопоставления:
SELECT * FROM emails WHERE subject NOT LIKE 'RE:%';SIMILAR TO и регулярные выражения (PostgreSQL)
Для более сложного сопоставления с шаблонами:
-- SIMILAR TO — SQL regex (rarely used)
SELECT 'abc' SIMILAR TO '%(a|b)%'; -- TRUE
-- POSIX regex:
SELECT 'abc123' ~ '^[a-z]+[0-9]+$'; -- TRUE
SELECT 'ABC' ~* 'abc'; -- TRUE (case insensitive)Создание полей поиска
При подключении пользовательского поля поиска сначала экранируйте подстановочные символы во входных данных, чтобы избежать неожиданного поведения:
-- Escape user input's special chars before concatenating to LIKE pattern,
-- or use to_tsquery for word-level search.
SELECT * FROM products
WHERE LOWER(name) LIKE LOWER('%' || $1 || '%');Не изобретайте полнотекстовый поиск заново
Для ранжированного поиска с учётом языка по документам используйте tsvector + GIN, а не LIKE. Это рассматривается далее в разделе «Расширенная индексация».
Итоги
LIKE отлично подходит для простого сопоставления с шаблоном.
%= любая строка,_= один символ- Для поиска без учёта регистра используйте ILIKE
- Для поиска по префиксу используется B-tree, а для поиска по подстроке нужна триграмма
Быстрая проверка
Какой шаблон соответствует строкам, оканчивающимся на .com?
Часто задаваемые вопросы
Урок «Шаблоны LIKE и подстановочные символы» бесплатный?
Да — полный текст урока «Шаблоны LIKE и подстановочные символы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.
Чему я научусь в уроке «Шаблоны LIKE и подстановочные символы»?
Используйте LIKE с подстановочными символами % и _, учитывайте регистр и предпочитайте ILIKE в PostgreSQL для поиска без учёта регистра Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SQL Academy?
Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Шаблоны LIKE и подстановочные символы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SQL Academy?
Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Шаблоны LIKE и подстановочные символы
- IN и NOT IN для множеств
- BETWEEN для диапазонов
- IS NULL, IS NOT NULL и COALESCE