当前位置: 首页 > 面试题库 >

为什么NULL = NULL在SQL Server中评估为false

房泉
2023-03-14
问题内容

在SQL Server中,如果
nullParam=NULL在where子句中,则其总值为false。这是违反直觉的,并导致了我很多错误。我确实了解IS NULLIS NOT NULL关键字是正确的方法。但是,为什么SQL Server会以这种方式表现呢?


问题答案:

在这种情况下,请将null视为“未知”(或“不存在”)。在这两种情况下,您都不能说它们相等,因为您不知道它们的价值。因此,null =
null的计算结果不为true(false或null,具体取决于您的系统),因为您不知道要说它们相等的值。此行为在ANSI SQL-92标准中定义。

编辑:这取决于您的ansi_nulls设置。如果您关闭ANSI_NULLS,则此值将为true。运行以下代码作为示例

set ansi_nulls off

if null = null
    print 'true'
else
    print 'false'


set ansi_nulls ON

if null = null
    print 'true'
else
    print 'false'


 类似资料:
  • 问题内容: 因此,我有一个简单的属性文件,其中包含以下条目: 该属性文件使用加载,该文件引用了上面的属性文件。 我有以下课程,为此,我正在尝试加载这些属性,如下所示: 问题是,并且总是为空…但是在我的控制器中,该值正好被加载。是什么赋予了? 问题答案: 如果通过手动实例化的实例,则不会涉及Spring,因此注释将被忽略。 如果您无法更改代码以使Spring实例化bean(也许使用-scoped b

  • 问题内容: 在我的Web应用程序中,我在Apache Tomcat(TomEE)/7.0.37服务器上使用OpenJPA。我使用Netbeans自动生成类(“来自数据库的实体类…”和“来自实体类的会话Bean …”)。在SessionBean(例如UserFacade)上,我想获取EntityManager: 但是当我通过上述方式得到它时,我得到的是空值。当我通过: ecm不为空,还可以 我的pe

  • 问题内容: 我正在阅读本文: 在SQL中获取null == null 共识是,当尝试测试两个(可空)sql列之间的相等性时,正确的方法是: 当A和B为时,(A = B)仍返回FALSE,因为NULL不等于NULL。这就是为什么需要额外检查的原因。 检验不平等情况如何?经过以上讨论,我认为要测试不平等,我需要做一些类似的事情: 但是,我注意到这不是必需的(至少在informix 11.5上没有),我

  • 本文向大家介绍null == undefined为什么?相关面试题,主要包含被问及null == undefined为什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 要比较相等性之前,不能将null 和 undefined 转换成其他任何值,但 null == undefined 会返回 true 。ECMAScript规范中是这样定义的。

  • 问题内容: 我有一些调用的代码。 不过,这将返回null。 当我从命令行而不是从Eclipse启动相同的代码时,它将返回一个类加载器。 我可以破解代码来做到这一点… 两者都被编译并使用相同的JVM运行。(我确定99.99%)。 任何人都知道为什么第一个会为类加载器返回null? 编辑: 我的问题是:“没有人知道为什么同一类通过Eclipse启动时会返回null,而从命令行加载时会返回类加载器。”

  • 问题内容: 我是SQL概念的新手,在研究NULL表达式时,我想知道为什么NULL与NULL不能匹配,有人能告诉我一个简单的例子来说明这个概念吗? 问题答案: 规则:甚至没有一个NULL都不能等于NULL。 非技术方面 如果您问两个女孩,他们几岁?可能是您会听到他们拒绝回答您的问题,两个女孩都给您NULL作为年龄,但这并不意味着两个人的年龄都差不多。因此,没有什么可以等于null。