SQL Server中的空条件

SQL Server中的空条件,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一张这样的桌子: ID | Code | YEAR --------+---------+---------- 0 | 1 | '1998' 1 | 5 | NULL 2 | 7 | '2013' 3 | 1 | '1892' 4 | 5 | NULL 5 | 7 | '1900' DECLARE @Status varchar

我有一张这样的桌子:

ID      | Code    | YEAR
--------+---------+----------
0       | 1       | '1998'
1       | 5       |  NULL
2       | 7       | '2013'
3       | 1       | '1892'
4       | 5       |  NULL
5       | 7       | '1900'
DECLARE @Status varchar(15)
--set the Status

SELECT * 
FROM tbl_Location
WHERE (@Status = 'All' 
       OR (@Status = 'Nulls' AND YEAR IS NULL) 
       OR (@Status = 'Not Nulls' AND YEAR IS NOT NULL)
      )
我有一个包含3个值的组合框:All、NULLs、Not NULLs

全部:加载所有行,不加载任何条件

SELECT * FROM tbl_Location
空值:

“不是空的”

SELECT * FROM tbl_Location Where YEAR is not Null
“All”是一个组合框值,用于无条件加载所有行


我想在一个查询中完成这一切。我能做什么?

您需要在@Status中传递组合框的值:

在这里,您需要设置如下条件:

ID      | Code    | YEAR
--------+---------+----------
0       | 1       | '1998'
1       | 5       |  NULL
2       | 7       | '2013'
3       | 1       | '1892'
4       | 5       |  NULL
5       | 7       | '1900'
DECLARE @Status varchar(15)
--set the Status

SELECT * 
FROM tbl_Location
WHERE (@Status = 'All' 
       OR (@Status = 'Nulls' AND YEAR IS NULL) 
       OR (@Status = 'Not Nulls' AND YEAR IS NOT NULL)
      )

“一个查询中的所有内容”是什么意思?@marc_不,这是不同的,这是关于空的values@ObieMD5我不想使用if条件,我不认为您可以使用if语句或开关。我之所以这样说,是因为您有一个请求所有内容的查询,然后您有一个带有过滤器的查询。如果它们都有过滤器,那么不需要If语句就可以完成。@ArMaN-我再次问你:你如何决定要所有行?有问题吗?仅供参考:我没有要求投票。阿曼删除了他的评论。在你回答他的问题后,他要求你对其进行表决。我写了我的评论,然后他删除了他的评论。你也知道我没有否决这个问题。“我这么说是因为有太多人这么说了。”@ObieMD5-我并不是说你否决了我但是其他人可能因为误解了你说的是我而投了反对票,所以请用它来回答别人。现在继续前进