Часть 7 учебника SQL. NULL — главный источник багов. Типы данных PG. COALESCE для значения по умолчанию. CAST для конверсии. CASE WHEN для условной логики.
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 «портит» всю формулу — и как COALESCE спасает:
Только через IS NULL / IS NOT NULL:
| Тип | Что хранит | Пример |
|---|---|---|
| INTEGER / BIGINT | Целое число | id, count |
| NUMERIC(p,s) / DECIMAL | Точное дробное | money, percentage |
| FLOAT / DOUBLE | Приближённое дробное | sensor data |
| TEXT / VARCHAR | Строка | name, email |
| DATE / TIMESTAMP | Дата / дата-время | created_at |
| BOOLEAN | true / false | is_active |
Правило для денег: всегда NUMERIC(18,2) или DECIMAL, не FLOAT. FLOAT теряет копейки из-за двоичного представления чисел.
COALESCE(val1, val2,..., default) — возвращает первое не-NULL.
CAST(value AS type) или короткая форма value::type (PG-специфика):
CASE WHEN cond1 THEN val1 WHEN cond2 THEN val2 ELSE valN END — условная логика, как if/elif/else.