SQL Server中的CASE WHEN NULL是什么意思?

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]“=”附近的语法不正确。

非常感谢您的帮助。

提前致谢。

mismas


有明显的问题,但是如果不知道您想做什么,很难建议修复方法。 - Laurence
我正在尝试将一部分添加到where子句和使用case...when...then...else...end。如果日期为null,则我希望where子句中的and部分始终为true,否则,如果给定日期,则我希望where子句中的and部分为date>='2013-09-24'。 - mismas
一个 CASE 表达式返回一个值,例如 case when table1.date is NULL then 1 when table1.date >= '20130924' then 1 else 0 end = 1 - HABO
3个回答

4
我认为这就是你想要的内容。
select
    * 
from 
    table1 
where 
    table1.name = 'something' and (
        table1.date is null or 
        table1.date >= '2013-09-24'
    );

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


2

尝试使用以下代码:

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

谢谢大家的评论,这对我很有帮助 :) - mismas

1
您可以考虑使用coalesce关键字。
select
    *
from 
    table1
where 
    table1.name='something' and 
    coalesce(table1.date,'2013-09-24') >= '2013-09-24';

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接