存储过程sql case或if else使用单个查询显示所有记录

时间:2011-11-11 12:01:41

标签: sql stored-procedures

好吧,我有 ID标题内容DATEPUBLISH DATEEXPIRED PUBLISH 作为我的内容表

我希望使用一个查询根据这些条件显示表中的所有记录。

我将datepublish作为文本框,dateexpired作为文本框并发布为复选框。

1)如果我输入datepublish,则内容将在不过期的情况下发布。

2)如果我输入datexpire,内容将立即开始发布,并在到期时到期

3)如果我输入两个日期,那么内容将从datepublish开始,并在dateexpired结束时到期

另一件事是

4)如果我检查了发布,那么它将绕过日期。

如何使用单个查询显示所有记录?。(我可以使用光标执行此操作)

1 个答案:

答案 0 :(得分:1)

SELECT *
FROM Table
WHERE ((@datePublish IS NULL OR Table.datePublish > @datePublish)
    AND (@dateExpired IS NULL OR Table.dateExpired < @dateExpired))
    OR @published = 1

如果您的任何一个日期值为空,则将NULL传递给该参数的存储过程(因此该参数不会限制结果集),如果选中该复选框,则@published = 1。