TGViewer
Data Science. SQL hub Data Science. SQL hub @sqlhub · 36K subscribers
Post #2438 3.1K
💡 SQL-трюк: сравнивайте `NULL` без костылей

В PostgreSQL обычное сравнение может неожиданно сломать условие:


SELECT NULL = NULL;


Результат:


NULL


Потому что NULL означает «неизвестное значение», а не конкретное значение.

Из-за этого часто пишут громоздкие условия:


WHERE a = b
OR (a IS NULL AND b IS NULL)


Но есть оператор, о котором многие забывают:


a IS NOT DISTINCT FROM b


Он работает как NULL-safe equality:


SELECT NULL IS NOT DISTINCT FROM NULL; -- true
SELECT 10 IS NOT DISTINCT FROM 10; -- true
SELECT 10 IS NOT DISTINCT FROM NULL; -- false


Есть и обратный вариант:


a IS DISTINCT FROM b


Например, удобно искать реально изменившиеся значения:


SELECT *
FROM old_data o
JOIN new_data n USING (id)
WHERE o.email IS DISTINCT FROM n.email;


Если оба email = NULL, строка не считается изменённой.

Без этого обычное:


o.email <> n.email


может просто вернуть NULL и пропустить изменение.

Особенно полезно при синхронизации данных, аудите изменений, ETL и UPSERT-логике.

#SQL #PostgreSQL #Database
  • 👍 9
  • 🔥 9
  • ❤ 7
More from @sqlhub
  1. Sep 21, 2026🧩 Сложная SQL-задача: симуляция DNS-кеша Есть таблица запросов: CREATE TABLE dns_requests…
  2. Sep 18, 2026🔥 PostgreSQL 19 задерживается релиз может сдвинуться на несколько недель или даже месяцев…
  3. Sep 17, 2026Участвуй во всероссийском ИТ-чемпионате МТС True Tech Champ 2026 c призовой фондом 10 250…
  4. Sep 17, 2026📌 NY Post: Anthropic - это культ Профессор Вашингтонского университета Педро Домингос в и…
  5. Sep 16, 2026Post #2492
  6. Sep 16, 2026Стать специалистом по Data Science всего за 10 недель — это реально! Если давно смотрите в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →