在更新触发器中,我正在比较2个可空的日期时间,在我当前的测试中它们都碰巧为空,并且返回它们不相等。
@ExpirationDateChanged = case when i.ExpirationDate = d.ExpirationDate then 0 else 1 end
在这种情况下,i.ExpirationDate和d.Expiration日期为空,但不是得到预期的0,我得到1.
任何人都可以解释这种行为吗?
答案 0 :(得分:2)
NULL
使用相等比较不等于NULL
。
在ANSI设置(默认值)
下,比较NULL值是否为UNKNOWN
您需要添加额外条件,以使用NULL
显式测试IS NULL
的两列:
@ExpirationDateChanged = case
when (i.ExpirationDate IS NULL AND d.ExpirationDate IS NULL) OR
i.ExpirationDate = d.ExpirationDate then 0
else 1
end