SQL Server日期检查基于输入

时间:2009-06-30 16:31:43

标签: sql-server database sql-server-2000

这个问题困扰了我很多次,我现在决定尝试为它找到合适的解决方案,而不是我总是回复的冗长/肮脏/可怕的方式(复制sql语句)

该表有一个日期列,默认值为NULL

现在我需要做的是将值(-1,0,1)传递给sql语句,该语句决定了什么回撤

-1 - should bring back all rows
0  - should bring back rows with a NULL date value
1  - should bring back rows with a valid date value

我尝试过使用CASE语句,但逻辑运算符需要根据传递给查询的值进行更改。

让我们只需调用表格引号并完成列,所以......

CREATE TABLE 'Quotes'
(
    completed DATETIME default(NULL)
)

解决方案需要适用于SQL Server 2000,我在存储过程中工作而不是动态SQL。所以它确实需要在一个声明中。


由于 丹

2 个答案:

答案 0 :(得分:7)

WHERE子句中的类似内容

WHERE (@param = -1)
OR (@param = 0 AND completed IS NULL)
OR (@param = 1 AND completed IS NOT NULL)

答案 1 :(得分:0)

试试这个:

declare @param int
set @param=-1
declare @sql varchar(2000)
set @sql='select * from quotes '+ 
case @param when 0 then 'where completed is null'
            when 1 then 'where completed is not null'
            when -1 then ''
end
exec(@sql)

拉​​吉