关于ansi_nulls的一些事情

时间:2010-04-30 19:54:29

标签: mysql database

我有一个问题,我们总是说null = null是假的,我想知道当ansi_nulls关闭时,这个语句是“null = null”也是假的吗?感谢

2 个答案:

答案 0 :(得分:10)

使用ANSI_NULLS OFFNULL = 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)

ansi_nulls关闭时,null = null将返回true。

例如

set ansi_nulls off
select 1 where null=null

给你:

1