确定两个参数是否为null,然后使用where子句中的参数

时间:2013-03-18 06:06:49

标签: sql

美好的一天,我在存储过程中收到2个可以为空的日期参数。 @StartDate和@EndDate。如果这两个参数为NULL,我需要正常执行我的过程,否则@StartDate参数必须是> =我的StartDateTime值和@EndDate参数需要是< =我的EndDateTime值。 下面是我想要完成但不确定语法的片段。

    FROM DI_Intervention_Schedule S
    WHERE
        (
            @ID IS NULL
        OR  S.[ID] = @ID
        )
    AND (
            CASE @StartDate WHEN IS NOT NULL THEN
                @StartDate >= S.[StartDateTime] AND @EndDate <= S.[EndDateTime]
            END
        )

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

尝试以下代码:

 FROM DI_Intervention_Schedule S
    WHERE
    (S.[ID] = @ID OR @ID IS NULL)
    AND (( S.[StartDateTime] >= @StartDate   AND S.[EndDateTime] <= @EndDate)  OR @StartDate IS NULL )