первый дубль, решение kludge, дозорный подход (обязательно, чтобы ваша программа не позволяла вводить дозорное значение):
select coalesce(a, -2147483648) = coalesce(b, -2147483648) as is_equal -- a little postgresism
Допустим, вы забыли заблокировать значение Sentinel в вашей программе, пользователь ввел -2147483648 в поле B, а A пусто. приведенный выше код сообщает об истинном, должен сообщать о ложном, не должен сообщать об истинном или нулевом.
Какой самый краткий способ сравнить равенство в обнуляемых полях? A == B должен просто сообщать либо true, либо false, независимо от того, являются ли поля (поля) обнуляемыми или нет.