如何在SQL Server的where子句中应用大小写?

时间:2018-09-11 08:27:47

标签: sql sql-server tsql

我在SQL Server中有以下where条件的查询

where  (Convert(date,AppDate) between Convert(date,''+@DateFrom +'') AND
    Convert(date,''+@DateTo+'') and DrCode =  '' +@DrCode+'' ) 

但是我想在DrCode> 0时添加and DrCode = '' +@DrCode+''

如何设置?

2 个答案:

答案 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)