用例在where子句sql server中

use*_*104 5 sql sql-server case

我试图做的是使查询考虑或不是日期时间值,所以我不必在存储过程中这样做

if @considerDate =1
    begin
        select * from table 
        where dateCol = @date
    end
else
    begin 
        select * from table
    end
Run Code Online (Sandbox Code Playgroud)

我想做一些想法

select * from table
where   dateCol = ( case 
                    when  @date is not null
                    then @date
            )
Run Code Online (Sandbox Code Playgroud)

在单个查询中

Joh*_*Woo 15

你只需要添加END关键字

SELECT * 
FROM    tableName
WHERE   dateCol =   CASE WHEN @considerDate =1
                         THEN @date 
                         ELSE dateCol 
                    END
Run Code Online (Sandbox Code Playgroud)


sge*_*des 5

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

SELECT * 
FROM Table
WHERE dateCol = 
   CASE WHEN @date is not null then @date ELSE dateCol END
Run Code Online (Sandbox Code Playgroud)