TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1401 1.9K
💡 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
  • ❤ 10
  • 👍 5
  • 🔥 2
More from @databases_tg
  1. Sep 17, 2026🖥 Race condition в SQL: как продать последний товар дважды? Race condition в SQL: Дио и Д…
  2. Sep 15, 2026Post #1432
  3. Sep 14, 2026🔥 Один из лучших обучающих курсов на StepiK по SQL SQL можно знать годами и всё равно тер…
  4. Sep 13, 2026Один товар, два покупателя. Как не продать больше, чем есть на складе? Если сначала прочит…
  5. Sep 13, 2026🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть…
  6. Sep 11, 2026🐘 pgbot - диагностика PostgreSQL для AI-агентов и приложений, написанная на Go Один испол…
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 →