2013-04-24 75 views
2

如何在SQL WHERE子句中设置条件筛选器?例如,我有以下过程中的参数@IDWHERE子句中的条件筛选器

SELECT * FROM myTable WHERE Column1 = 'test' AND Column2 = @ID 

然而,如果@ID = -1我不希望SQL的最后一部分(列2 = @ID)包括

我意识到我可以做一个if语句与2个单独的查询,但是这是一个大脚本,并有多次这个相同的问题,所以我希望有一个比几乎重复几个查询更好的方法

回答

5

这是好的T-SQL:

SELECT * FROM myTable WHERE Column1 = 'test' AND (@ID = -1 OR Column2 = @ID) 
2

只需在您的SQL作为或条件,注意括号

SELECT * FROM myTable WHERE Column1 = 'test' AND (@ID = -1 OR Column2 = @ID) 
1

一种选择:

SELECT * FROM myTable WHERE Column1 = 'test' AND @ID in (-1,Column2)