这个问题困扰了我很多次,我现在决定尝试为它找到合适的解决方案,而不是我总是回复的冗长/肮脏/可怕的方式(复制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。所以它确实需要在一个声明中。
由于 丹
答案 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)
拉吉