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

IS NULL与<> 1个SQL位

闾丘照
2023-03-14
问题内容

我在SQL Server 2012数据库的表上有一点列。

我正在尝试检索此位列为NULLtrue或NOT TRUE的所有行。

该查询不带回它应该返回的内容:(返回0行)

Select * 
from table 
where bit_column_value <> 1

此查询带回正确的行:

Select * 
from table 
where bit_column_value IS NULL

现在,我很乐意使用第二个查询,但是我的问题是,在对另一个表进行类似的查询中,上述相反的做法是正确的,其中第一种方法可行,但第二种方法无效!

有人可以帮忙解释一下上面的区别吗?我已将相关的位列专门更新为NULL,这不会更改结果。(认为​​“空”和Null值之间可能存在差异。

预先感谢您的任何解释。


问题答案:

之所以<>不起作用是SQL对待NULL未知-
它不知道什么NULL是应该的意思,所以它会评估=,并<>NULLUNKNOWN(在where子句或连接条件视为假)。有关更多信息,请阅读:SQL
Server中为什么NULL =
NULL评估为false


如果上面有一个索引,则使用ISNULL函数将意味着该索引无法使用,因此要确保查询可以使用该索引,只需使用OR

SELECT * 
FROM TableName
WHERE
   bit_column_value IS NULL OR bit_column_value = 0


 类似资料:
  • 问题内容: 我有以下几点: 如果@VariableEqualToZero为null,它将替换为1。如果@VariableEqualToZero = 0,也需要它替换为1。我该怎么做呢? 问题答案:

  • SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数 请看下面的 "Products" 表: P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder 1 Jarlsberg 10.45 16 15 2 Mascarpone 32.56 23 3 Gorgonzola 15.67 9 20 假如 "UnitsOnOr

  • 问题内容: 最近,我遇到了一种情况,如果第一个字符串为null ,函数将向我返回截断的数据。 我发现a是5个字符,b是10个字符,但是当a为null时,它将仅返回b的5个字符而不是全长。 这是一个已知的问题? 问题答案: 这是一个已知的行为 从 MSDN 如果check_expression的值不为NULL,则返回该值;否则返回false。否则,如果类型不同,则将replace_value隐式转换

  • 问题内容: 我在Access DB的VB应用程序中有此查询: 它给出了我无法解决的以下问题… “查询表达式’ISNULL(a.faultCount,0’)中的函数使用的参数数量错误。” 我要实现的只是将值设置为零,这意味着在特定区域中没有故障。 谢谢你 问题答案: 我想补充我的两分钱,而我喜欢NZ()的简单的语法,如果你寻求无故障性能,既ISNULL()和新西兰()应该有利于为NULL来避免: 。

  • 问题内容: 我有一个带有列和的表格。它们都是类型。我写了一个查询 我读了电子邮件作为,因为它是。 正如我从互联网上看到的那样,如果为NULL,那么它应该返回。但是它说不能翻译成。 我该如何纠正?为什么返回布尔值? 问题答案: 据此,这 不是在SQL Server CE中实现的。我希望看到出现语法错误。 解决方法:您可以使用或。最好是后者。 还可以使用参数化查询。如果您不知道为什么要学习,请学习。

  • 如果指定的值为 null ,则返回 true ;否则返回 false。 使用严格等号运算符来检查 val 值是否等于 null 。 const isNull = val => val === null; isNull(null); // true