SQL WHERE放错了地方?

时间:2016-03-30 14:22:08

标签: sql-server

我想从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吗?

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

我可以帮助我吗

1 个答案:

答案 0 :(得分:2)

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

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上的文档