CASE在SQL Server中为null时

时间:2013-10-27 19:15:38

标签: sql sql-server null case

我正在使用SQL Server数据库。

此查询:

SELECT *
FROM   table1
WHERE  table1.name = 'something'
       AND CASE
             WHEN table1.date IS NULL THEN 1 = 1
             ELSE table1.date >= '2013-09-24'
           END; 

给了我错误:

  

[错误代码:102,SQL状态:S0001]'='附近的语法不正确。

感谢任何帮助,

提前致谢

mismas

3 个答案:

答案 0 :(得分:4)

我认为这就是你想要的。

select
    * 
from 
    table1 
where 
    table1.name = 'something' and (
        table1.date is null or 
        table1.date >= '2013-09-24'
    );

SQL Server实际上没有可以作为结果使用的布尔类型。

答案 1 :(得分:2)

试试这段代码:

select * 
from table1 
where table1.name='something' 
and (table1.date is null Or table1.date >= '2013-09-24');

答案 2 :(得分:1)

您可以考虑coalesce关键字。

select
    *
from 
    table1
where 
    table1.name='something' and 
    coalesce(table1.date,'2013-09-24') >= '2013-09-24';

Coalesce 会返回非空的第一个参数。