比较2个空日期时间时未返回相等值



在更新触发器中,我比较两个可为null的日期时间,这两个时间在我当前的测试中恰好为null,并且返回它们不相等。

@ExpirationDateChanged = case when i.ExpirationDate = d.ExpirationDate then 0 else 1 end

在这种情况下,i.ExpirationDate和d.ExpirationDate为null,但我得到的不是预期的0,而是1。

有人能解释这种行为吗?

NULL不等于使用相等比较的NULL

在ANSI设置(默认值)下,比较NULL值是否相等为UNKNOWN

您需要添加一个额外的条件来使用IS NULL:显式测试这两列的NULL

@ExpirationDateChanged = case 
                             when (i.ExpirationDate IS NULL AND d.ExpirationDate IS NULL) OR
                                   i.ExpirationDate = d.ExpirationDate then 0 
                             else 1 
                         end

相关内容

  • 没有找到相关文章

最新更新