首页 > 解决方案 > 如何在sql server的where子句中应用case?

问题描述

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

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

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

如何设置?

标签: sqlsql-servertsql

解决方案


我不知道你为什么要这样进行字符串连接:

'' + @DateFrom + ''

无论如何,我认为CASE表达方式不适合您想做的事情。直接在WHERE子句中说明逻辑即可:

WHERE
    CONVERT(date, AppDate) BETWEEN
        CONVERT(date, @DateFrom) AND CONVERT(date, @DateTo) AND
        ((DrCode = @DrCode AND DrCode > 0) OR DrCode <= 0);

推荐阅读