猿问

为什么NULL=NULL在SQL服务器中计算为false

为什么NULL=NULL在SQL服务器中计算为false

在sql server中,如果您有nullParam=NULL在WHERE子句中,它总是计算为false。这违反了直觉,给我带来了许多错误。我明白IS NULLIS NOT NULL关键词是正确的方法。但是,为什么SQL Server的行为是这样的呢?



神不在的星期二
浏览 1861回答 3
3回答

慕少森

在这种情况下,可以将NULL看作“未知”(或“不存在”)。在任何一种情况下,你都不能说它们是相等的,因为你不知道它们的价值。因此,NULL=NULL计算为不真(根据您的系统而定,为false或NULL),因为您不知道表示它们相等的值。这种行为是在ANSI SQL-92标准中定义的。编辑:这取决于您安西零背景。如果ANSI_NULLS关闭,这将计算为true。为一个示例运行以下代码.。set ansi_nulls offif null = null     print 'true'else     print 'false'set ansi_nulls ONif null = null     print 'true'else     print 'false'

当年话下

弗兰克多大了?我不知道(零)。雪莉多大了?我不知道(零)。弗兰克和雪莉同龄吗?正确的答案应该是“我不知道”(空),而不是像弗兰克和雪莉那样的“不”强权同龄,我们根本不知道。
随时随地看视频慕课网APP
我要回答