我有一个问题,我们总是说null = null是假的,我想知道当ansi_nulls关闭时,这个语句是“null = null”也是假的吗?感谢
答案 0 :(得分:10)
使用ANSI_NULLS OFF
,NULL = NULL
评估为TRUE
。
使用ANSI_NULLS ON
(默认值),NULL = NULL
的评估结果为NULL
。
NULL IS NULL
始终评估为TRUE
。
但是,在MySQL中,您无法关闭ANSI_NULLS。您可能正在考虑使用MS SQL Server。
未来版本的MS SQL Server将不支持ANSI_NULLS OFF
,因此我不会使用它。
您应该离开ANSI_NULLS ON
并使用IS NULL
来评估某些内容是否为空。
如果您在记住默认情况下NULL的工作方式(ANSI_NULLS ON)时遇到问题,则应将NULL视为“未知”。例如,如果房间里有两个陌生人,他们的名字是NULL。如果您的查询是“他们的名字是否相同?”你的答案是空的。
现在,让我们说鲍勃在房间里只有一个陌生人,他的名字是空的。您的查询的答案是“他们的名字是否相同?”一片空白。请注意,如果将任何内容与NULL进行比较,则答案为空。
答案 1 :(得分:1)