为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2019-06-24 16:41:42
为什么NULL=NULL在SQL服务器中计算为false在sql server中,如果您有nullParam=NULL在WHERE子句中,它总是计算为false。这违反了直觉,给我带来了许多错误。我明白IS NULL和IS NOT NULL关键词是正确的方法。但是,为什么SQL Server的行为是这样的呢?
查看完整描述

3 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

在这种情况下,可以将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'


查看完整回答
反对 回复 2019-06-24
?
当年话下

TA贡献1890条经验 获得超9个赞

弗兰克多大了?我不知道(零)。

雪莉多大了?我不知道(零)。

弗兰克和雪莉同龄吗?

正确的答案应该是“我不知道”(空),而不是像弗兰克和雪莉那样的“不”强权同龄,我们根本不知道。


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 1860 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信