当 x 为空时,为什么 x <> 1 为假?

Ian*_*ton 2 sql-server t-sql

我有一个查询,当field1 <> 10.

field1为空时,这个谓词是false!

根据我的原始数学,如果null <> 10 = false,则10 = null

这样做的理由是什么?

Wor*_*DBA 6

这是因为与NULL实际结果的比较是未知的。NULL是缺少数据,因此您将一个值与任何内容进行比较,结果无法确定。

当数据中存在空值时,逻辑和比较运算符可能会返回 UNKNOWN 的第三个结果,而不仅仅是 TRUE 或 FALSE。这种对三值逻辑的需求是许多应用程序错误的根源。这些表概述了引入空比较的影响。

取自MSDN 上的文档

  • @clifton_h 这个问题被标记为 `sql-server` 和 `t-sql` (2认同)