与可空值进行SQL等式/不等式比较

时间:2009-03-25 09:22:51

标签: sql postgresql comparison equality

首先采取kludge解决方案,哨兵方法(你的程序不应该允许输入哨兵值):

 select coalesce(a, -2147483648) = coalesce(b, -2147483648) as is_equal -- a little postgresism

假设您忘记阻止程序上的标记值,用户在B字段上输入-2147483648,A为空。上面的代码报告为true,如果报告为false,则不应报告true或null。

比较可空字段上的相等性最简洁的方法是什么? A == B应该只报告真或假,无论字段是否可以为空。

2 个答案:

答案 0 :(得分:10)

可能IS [NOT] DISTINCT FROM会在这里提供帮助。

答案 1 :(得分:0)

运营商< =>在其他数据库引擎中做你想做的事;是不是在postgres?否则,a is null and b is null or (a is not null and b is not null and a == b)应该有效。这是有效的,因为FALSE AND NULLFALSE