当Date为null时,SQL Query跳过日期过滤器中的Where子句

时间:2015-07-29 05:04:38

标签: mysql sql sql-server sql-server-2008

我有搜索查询参数是名称,从日期,到目前为止。当我传递空字符串或null到日期参数时,它应该返回所有数据匹配仅与名称。这段代码对我不起作用。

app.animation('.animation-ng-repeat', function(){
    return {
        leave : function(element, done) {
            element.slideUp({complete: done});
        },
        enter : function(element, done) {
            element.hide();
            setTimeout(function() {
                element.slideDown({complete: done});
            }, 50);
        }
    }
});

这也不适合我。

WHERE name=@name 
AND 
(CASE WHEN @_from IS not null 
            THEN
                Servicedate<=@_from 
            END)

谢谢。

3 个答案:

答案 0 :(得分:4)

您可以使用:

WHERE
    name = @name
    AND (@_from IS NULL OR ServiceDate >= @_from)
    AND (@_to IS NULL OR ServiceDate <= @_to)

如果未设置变量(@_from@_to),则条件将返回true,因为@var IS NULLtrue

答案 1 :(得分:1)

WHERE ( name=@name AND @_from IS NOT NULL AND Servicedate<=@_from )
      OR
      ( name=@name AND @_from IS null )

如果日期参数@_from为空,则仅在名称参数@name上进行搜索,否则ServiceDate列与日期参数@_from匹配

答案 2 :(得分:1)

WHERE
(name=@name AND @_from IS NOT NULL AND @_from <> '' AND Servicedate<=@_from )
OR
(name=@name AND (@_from IS null or @_from = ''))