[英]How to apply case in where clause in sql server?
我在SQL Server中使用以下查詢where
條件
where (Convert(date,AppDate) between Convert(date,''+@DateFrom +'') AND
Convert(date,''+@DateTo+'') and DrCode = '' +@DrCode+'' )
但是我想添加and DrCode = '' +@DrCode+''
當DrCode> 0時DrCode and DrCode = '' +@DrCode+''
如何設置?
我不知道您為什么要像這樣進行字符串連接:
'' + @DateFrom + ''
無論如何,我認為CASE
表達式不適合您要執行的操作。 只需直接在WHERE
子句中闡明邏輯即可:
WHERE
CONVERT(date, AppDate) BETWEEN
CONVERT(date, @DateFrom) AND CONVERT(date, @DateTo) AND
((DrCode = @DrCode AND DrCode > 0) OR DrCode <= 0);
如果要DrCode > 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.