了解为什么 NULL = NULL
在 SQL Server 中返回 False
SQL Server 对 NULL
值的处理通常会导致意外结果。 =
运算符在比较可空列时返回 <code>false</code>,因为 NULL
表示未知或缺失值。
像 WHERE
这样的 nullParam = NULL
子句条件总是评估为 <code>false</code>。这是因为不可能明确确认两个未知量之间的相等性。
SQL-92 标准规定了此行为:NULL = NULL
既不是 true 也不是 false;它是未定义的。
ansi_nulls
设置的影响
行为会根据 ansi_nulls
设置发生显着变化。 将 ansi_nulls
设置为 OFF
时,NULL = NULL
的计算结果令人惊讶地为 <code>true</code>。 如下所示:
代码示例:
<code class="language-sql">SET ANSI_NULLS OFF; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false'; SET ANSI_NULLS ON; IF NULL = NULL PRINT 'true'; ELSE PRINT 'false';</code>
输出:
与ansi_nulls OFF
:
<code>true</code>
与ansi_nulls ON
:
<code>false</code>
处理 NULL 的最佳实践
由于这种可变性,在使用 ansi_nulls
比较时了解 NULL
设置至关重要。 为了避免歧义,在检查 IS NULL
值时始终使用 IS NOT NULL
和 NULL
。 无论 ansi_nulls
设置如何,这都确保了一致且可预测的行为。 这是可靠 SQL 代码的推荐方法。
以上是为什么 SQL Server 中'NULL = NULL”返回 False(以及'ansi_nulls”如何影响它)?的详细内容。更多信息请关注PHP中文网其他相关文章!