如何在SQL WHERE子句中设置条件过滤器?例如,我有一个带有以下过程的参数@ID
SELECT * FROM myTable WHERE Column1 = 'test' AND Column2 = @ID
但是,如果@ID = -1,我不希望包含SQL的最后部分(AND Column2 = @ID)
我意识到我可以使用2个单独的查询创建一个if语句,但是这是一个大型脚本并且多次出现同样的问题,所以我希望有一种比几乎复制几个查询更好的方法
答案 0 :(得分:5)
这适用于T-SQL:
SELECT * FROM myTable WHERE Column1 = 'test' AND (@ID = -1 OR Column2 = @ID)
答案 1 :(得分:2)
只需在SQL中包含条件作为OR,请注意括号
SELECT * FROM myTable WHERE Column1 = 'test' AND (@ID = -1 OR Column2 = @ID)
答案 2 :(得分:1)
另一种选择:
SELECT * FROM myTable WHERE Column1 = 'test' AND @ID in (-1,Column2)