代码之家  ›  专栏  ›  技术社区  ›  Saajid Ismail

SQL Server-选择行不会返回任何空值。为什么?

  •  3
  • Saajid Ismail  · 技术社区  · 15 年前

    我有以下SQL表:

    CREATE TABLE [dbo].[Test](
        [TestID] [int] NOT NULL,
        [TestNum] [int] NULL,
        [TestReason] [varchar](50) NULL
    )
    

    所以 试验室 国际的 允许 无效的 值,我在表中插入了大量数据,其中一些行包含 无效的 价值观 试验室

    如果我运行下面的查询

    select *
    from Test
    where TestNum != 123
    

    查询aboe不返回任何具有 无效的 价值。我希望它返回除值为123的行以外的所有行。

    为什么会这样?

    我正在导入到MS SQL 2005的MS-SQL 2000数据库上运行此查询。这有什么效果吗?或者此行为标准适用于所有版本的MS SQL Server?

    2 回复  |  直到 15 年前
        1
  •  12
  •   Anon246    15 年前

    空表示值“未知”。因此,空=空为假。如果要查看空值,还必须说“或testnum为空”。

        2
  •  1
  •   Liwen    15 年前

    尝试

    SELECT * FROM Test WHERE TestNum != 123 OR TestNum IS NULL
    

    空值的处理方式与其他值不同。 无法比较 NULL 123 它们不是等价的。