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