Обычное сравнение через
= ломается, если возможен NULL:SELECT *
FROM users
WHERE email = 'admin@example.com';
Эта проверка никогда не вернёт строки с NULL, даже если логически они равны:
SELECT *
FROM users
WHERE email IS NOT DISTINCT FROM NULL;
IS NOT DISTINCT FROM считает NULL = NULL и работает как настоящее равенство:sql
SELECT *
FROM users
WHERE (email, phone)
IS NOT DISTINCT FROM ('a@b.com', NULL);
Работает и для составных сравнений, без
OR … IS NULL.🔥
IS NOT DISTINCT FROM - способ сравнивать значения, когда NULL допустимое состояние, а не исключение.➡️ SQL Ready | #совет
