用例在where子句sql server中

时间:2013-02-19 00:28:25

标签: sql sql-server case

我想要做的是让查询考虑或不考虑日期时间值,所以我不必在存储过程中执行此操作

if @considerDate =1
    begin
        select * from table 
        where dateCol = @date
    end
else
    begin 
        select * from table
    end

我想做一些像

这样的想法
select * from table
where   dateCol = ( case 
                    when  @date is not null
                    then @date
            )

在单个查询中

3 个答案:

答案 0 :(得分:14)

您只需添加END关键字

即可
SELECT * 
FROM    tableName
WHERE   dateCol =   CASE WHEN @considerDate =1
                         THEN @date 
                         ELSE dateCol 
                    END

答案 1 :(得分:4)

如果我理解正确,这应该有效:

SELECT * 
FROM Table
WHERE dateCol = 
   CASE WHEN @date is not null then @date ELSE dateCol END

答案 2 :(得分:2)

难道你不能做这样更清楚的事吗?

SELECT *
FROM table
WHERE dateCol = IsNull(@date, dateCol)