← Все уроки

SQL с нуля. Часть 7: NULL, COALESCE, CAST, CASE

Часть 7 учебника SQL. NULL — главный источник багов. Типы данных PG. COALESCE для значения по умолчанию. CAST для конверсии. CASE WHEN для условной логики.

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

TL;DR: NULL означает «нет данных», не равен ничему (даже NULL). Сравнивать через IS NULL / IS NOT NULL. COALESCE(x, default) подменяет NULL на значение. CAST(x AS type) меняет тип. CASE WHEN cond THEN val... END — условная логика. Эти 4 темы решают 80% проблем с качеством данных.

В этой части:

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

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

Что такое NULL и почему он опасен?

NULL — не «ноль» и не «пустая строка». Это «нет значения».

Шпаргалка: 3 правила NULL — сравнение, арифметика, агрегаты + таблица примеров запросов

Анимация: NULL заражает арифметику (5 + NULL = NULL), а COALESCE(x, 0) подставляет запасное значение

NULL — три правила распространения: арифметика, сравнение, агрегаты

Как NULL «портит» всю формулу — и как COALESCE спасает:

NULL cascade: ошибка распространяется через колонки

Как фильтровать NULL?

Только через IS NULL / IS NOT NULL:

Какие 6 типов данных нужно знать?

ТипЧто хранитПример
INTEGER / BIGINTЦелое числоid, count
NUMERIC(p,s) / DECIMALТочное дробноеmoney, percentage
FLOAT / DOUBLEПриближённое дробноеsensor data
TEXT / VARCHARСтрокаname, email
DATE / TIMESTAMPДата / дата-времяcreated_at
BOOLEANtrue / falseis_active

Правило для денег: всегда NUMERIC(18,2) или DECIMAL, не FLOAT. FLOAT теряет копейки из-за двоичного представления чисел.

Как заменить NULL на значение по умолчанию?

COALESCE(val1, val2,..., default) — возвращает первое не-NULL.

Как преобразовать тип через CAST?

CAST(value AS type) или короткая форма value::type (PG-специфика):

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

CASE WHEN cond1 THEN val1 WHEN cond2 THEN val2 ELSE valN END — условная логика, как if/elif/else.

Шпаргалка: 5 типичных паттернов CASE WHEN — сегментация, pivot, NULL replace, условная агрегация, кастомная сортировка

Анимация: CASE WHEN распределяет строки по меткам — первое подходящее условие выигрывает

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