← Все уроки

SQL с нуля. Часть 9: строки — LIKE, SUBSTRING, regex

Часть 9 учебника SQL. Работа со строками в PostgreSQL. LIKE и ILIKE для поиска, SUBSTRING для обрезки, CONCAT для соединения, regex для сложных паттернов.

Урок курса «SQL с нуля» — открой бесплатной регистрацией
Ниже — план урока. Зарегистрируйся за 30 секунд, чтобы открыть полную теорию и 11 задач с автопроверкой прямо в браузере (PostgreSQL и SQLite с автопроверкой), сохранять прогресс и пройти все 10 частей бесплатно.
Шпаргалка: LIKE wildcards — 2 спецсимвола (%, _) + 7 типичных паттернов с примерами совпадений + предупреждение о ведущем % и индексах

TL;DR: LIKE 'pat%' — поиск по подстроке с wildcard (% любая последовательность, _ любой 1 символ). ILIKE — то же без учёта регистра. SUBSTRING(s FROM x FOR y) — обрезка. CONCAT или || — соединение. REGEXP_REPLACE / ~ — regex. Для аналитики нужны почти все эти функции.

В этой части:

Что разберёшь в этом уроке

Частые вопросы

Как искать по подстроке?

Шпаргалка: LIKE wildcards — 2 спецсимвола (%, _) + 7 типичных паттернов с примерами совпадений + предупреждение о ведущем % и индексах

LIKE 'pattern' с двумя wildcard:

Как обрезать или выделить подстроку?

SUBSTR извлекает часть строки, INSTR находит позицию символа, LENGTH считает символы — комбинация даёт «вытащить домен email»

SUBSTRING(s FROM start FOR length) или короче SUBSTRING(s, start, length):

Какие 8 основных строковых функций?

ФункцияЧто делаетПример
LENGTH(s)Длина строкиLENGTH('hello') = 5
UPPER(s)В верхний регистрUPPER('hi') = 'HI'
LOWER(s)В нижнийLOWER('Hi') = 'hi'
TRIM(s)Убрать пробелы по краямTRIM(' hi ') = 'hi'
CONCAT(a, b) или a \\bСоединение'a' \\'b' = 'ab'
REPLACE(s, old, new)ЗаменаREPLACE('abc', 'b', 'X') = 'aXc'
SPLIT_PART(s, delim, n)n-я часть после splitSPLIT_PART('a.b.c', '.', 2) = 'b'
LEFT(s, n) / RIGHT(s, n)Слева/справа N символовLEFT('hello', 3) = 'hel'

Что такое regex и когда его использовать?

Регулярные выражения — для сложных текстовых паттернов, недоступных LIKE.

В PG — оператор ~ (match) и !~ (не match), регистронезависимые ~* / !~*:

Какие 4 ошибки со строками?

LIKE или regex — что быстрее?

LIKE с префиксом без ведущего % (например 'text%') может использовать индекс — это быстро. Паттерн '%text%' с ведущим % индекс не использует — это full scan, как и regex. Regex берут не скоростью, а выразительностью: он короче, когда заменяет 5+ OR-условий с LIKE.

Free — после регистрации
0 ₽
  • Все 10 уроков курса + 92 интерактивных задач
  • 5 SQL и 5 Python-задач в тренажёре
  • 5 кейсов · 10 метрик · 1 AI-собеседование
Начать бесплатно →
Pro
1 999 ₽/мес
  • Все 576 SQL + 561 Python-задач
  • 627 кейсов · 420 метрик · 698 заданий
  • Безлимит AI-собеседований с разбором
Оформить Pro →