SQL Server:当条件为FALSE时,如何选择表的所有结果?

时间:2016-06-02 15:09:19

标签: sql-server stored-procedures

我在存储过程中遇到了麻烦:

SELECT * FROM TESTTABLE
WHERE COUNT = CASE WHEN (@count = -1) THEN --SELECT ALL RESULT OF TESTTABLE--
ELSE @count END

当param @count不等于-1时,我希望该查询与:

相同
SELECT * FROM TESTTABLE

我试过

SELECT * FROM TESTTABLE
WHERE COUNT = CASE WHEN (@count <> -1) THEN @count END

但事实并非如此。

3 个答案:

答案 0 :(得分:2)

由于它是一个存储过程,因此最佳性能应该使用2个不同的查询:

if @count <> -1 
  SELECT * FROM TESTTABLE
else
  SELECT * FROM TESTTABLE WHERE COUNT=@count

答案 1 :(得分:0)

由于您使用的是存储过程,因此可以使用if语句。类似的东西:

IF @Count <> -1
BEGIN
   Select * From TestTable
END
ELSE
BEGIN
    Select * From TestTable Where 1=0
END

答案 2 :(得分:0)

SELECT * FROM TESTTABLE WHERE COUNT=@count OR @count = -1
相关问题