0Pricing
SQL Academy · Урок

Шаблоны 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 indexable

NOT 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 — локальная установка не требуется.

Все уроки этого курса

  1. Шаблоны LIKE и подстановочные символы
  2. IN и NOT IN для множеств
  3. BETWEEN для диапазонов
  4. IS NULL, IS NOT NULL и COALESCE
← Назад к SQL Academy