2016-08-12 132 views
1

我有一个表格,其中包含我公司产品的详细信息,其中一列包含产品类别,但还包含尚未分类产品的空字符串。SQL Server过滤掉字符串,但留下空字符串

我试图过滤出类别'垃圾',剩下的部分包括空的部分,但是当我应用过滤器时,空过的部分也正在消失... 这是正常的吗?我怎样才能过滤出“垃圾”,并留下所有其他的东西,包括空值?

我使用的是WHERE条款是这样的:

WHERE 
    table.month = 8 AND table.category <> 'trash' 
+3

向我们显示您的数据。我猜消失的项目有NULL值。 –

+0

您是否确定*有*项目的'month = 8'有category <>'trash''? –

+2

@ThorstenDittmar不能在SQL Server中,你可以在这里看到。 https://data.stackexchange.com/stackoverflow/query/523606 –

回答

4

也许你有categoryNULL条目。因此,它们不会被退回,因为根据定义,比较null <> 'trash'既不是true也不是false,但WHERE子句将只返回所有条件为true的记录。

您可以修改您的发言到此:

WHERE table.month = 8 AND ISNULL(table.category, '') <> 'trash' 

或本:

WHERE table.month = 8 AND (table.category is null OR table.category <> 'trash') 

这家前身为内容替换null值与空字符串,它应该回到你想要什么。

+0

非常感谢你,第一个声明完美地工作。我不知道NULL会像这样行事。谢谢 – ricardomadaleno