如何有条件地删除where子句中的条件?

时间:2016-10-13 09:52:53

标签: sql-server

SELECT * FROM someTable WHERE someField = 'A' 
and (EndTime > @someTime OR EndTime IS NULL)

以上是原始查询。现在我有一个新的条件,看看是否要带走EndTime IS NULL

SET @Throw = 1;

IF @Throw = 1
BEGIN
    SELECT * FROM someTable WHERE someField = 'A' 
    and (EndTime > @someTime)
END
ELSE IF @Throw = 0
BEGIN
    SELECT * FROM someTable WHERE someField = 'A' 
    and (EndTime > @someTime OR EndTime IS NULL)
END

我想知道这是否可以在1个查询中实现,或者它必须在2个查询中?

2 个答案:

答案 0 :(得分:2)

main

答案 1 :(得分:0)

SELECT * FROM someTable WHERE someField = 'A' 
    and (EndTime > @someTime AND @Throw = 1) OR ((EndTime > @someTime OR EndTime is NULL) AND @Throw = 0)