4

我正在使用 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] '=' 附近的语法不正确。

任何帮助表示赞赏,

提前致谢

错配

4

3 回答 3

4

我想这就是你想要的。

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

因此,SQL Server 并没有真正可以使用的布尔类型。

于 2013-10-27T19:20:11.293 回答
2

试试这个代码:

select * 
from table1 
where table1.name='something' 
and (table1.date is null Or table1.date >= '2013-09-24');
于 2013-10-27T19:22:23.523 回答
1

您可以考虑使用 coalesce 关键字。

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

Coalesce返回第一个不为空的参数。

于 2013-10-27T19:23:06.530 回答