【问题标题】:SQL WHERE is misplaced? [duplicate]SQL WHERE 放错地方了? [复制]
【发布时间】:2016-03-30 14:22:07
【问题描述】:

我想从数据库中选择ArkivDate 为空的行。

我试过这个:

SELECT
    * 
FROM
    [Bums].[dbo].[Items] 
INNER JOIN 
    [Bums].[dbo].[ItemsArkivFormUsed] ON [Bums].[dbo].[ItemsArkivFormUsed].[ItemNumber] = [Bums].[dbo].[Items].[ItemNumber] 
WHERE 
    [Bums].[dbo].[ItemsArkivFormUsed].[ArkivDate] = null

如果我删除 WHERE 子句,则查询有效,但是当我包含它时,结果返回空。

我想知道,我是否放错了WHERE

这些表确实有一些 null ArkivDate 但我的查询无法过滤以仅显示它们

谁能帮帮我

【问题讨论】:

标签: sql-server


【解决方案1】:

NULL 是 sql 中的一个奇怪的野兽,当 ANSI_NULLS 设置为默认值时,您需要使用语法 IS NULL 而不是 = NULL

SELECT * FROM [Bums].[dbo].[Items] 
INNER JOIN [Bums].[dbo].[ItemsArkivFormUsed] 
    ON [Bums].[dbo].[ItemsArkivFormUsed].[ItemNumber] = [Bums].[dbo].[Items].[ItemNumber] 
WHERE [Bums].[dbo].[ItemsArkivFormUsed].[ArkivDate] IS NULL

有关更多信息,请参阅 SET ANS_NULL 上的文档

【讨论】:

  • 谢谢,现在可以使用了
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 2018-08-24
相关资源
最近更新 更多