我在SQL Server中有以下where
条件的查询
where (Convert(date,AppDate) between Convert(date,''+@DateFrom +'') AND
Convert(date,''+@DateTo+'') and DrCode = '' +@DrCode+'' )
但是我想在DrCode> 0时添加and DrCode = '' +@DrCode+''
如何设置?
答案 0 :(得分:2)
我不知道您为什么要像这样进行字符串连接:
'' + @DateFrom + ''
无论如何,我认为CASE
表达式不适合您要执行的操作。只需直接在WHERE
子句中阐明逻辑即可:
WHERE
CONVERT(date, AppDate) BETWEEN
CONVERT(date, @DateFrom) AND CONVERT(date, @DateTo) AND
((DrCode = @DrCode AND DrCode > 0) OR DrCode <= 0);
答案 1 :(得分:0)
如果您想对DrCode > 0
分别使用DrCode = '' +@DrCode+''
条件,则可以尝试以下操作:
where (Convert(date,AppDate) between Convert(date,''+@DateFrom +'') AND
Convert(date,''+@DateTo+'')) and
(CASE WHEN DrCode > 0 AND DrCode = '' +@DrCode+'' THEN 1 ELSE 0 END =1)