WHERE子句中的条件语句

时间:2009-08-03 22:21:03

标签: sql sql-server syntax

我需要在我的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

感谢大家的帮助。

2 个答案:

答案 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语句完全不同。