我需要在我的where子句中编写一个条件语句,该子句根据传递给过程的参数使用不同的运算符。我似乎无法找到可行的语法。
我的例子如下:
@DateValue datetime
select *
from table
where field1 = 'x'
and field2 = 'y'
and if @DateValue = '1/1/1900' then
field3 <= getdate()
else
field3 = @DateValue
end
感谢大家的帮助。
答案 0 :(得分:9)
and ((@DateValue = '1/1/1900' and field3 <= getdate()) or
(@DateValue <> '1/1/1900' and field3=@DateValue))
答案 1 :(得分:0)
我认为您需要类似(伪代码)
Create PROCEDURE GetPartialTable
@DateValue datetime
AS
Begin
IF (@DateValue = '1900-01-01')
select * from table where field1 = 'x' and field2 = 'y' and field3 <= getdate();
else
select * from table where field1 = 'x' and field2 = 'y' and field3 = @DateValue;
END IF
END
听起来像上面的解决方案,但是如果上下文更笼统,例如如果整个SQL语句完全不同。