where子句中的SQL过滤器

时间:2016-03-16 13:52:48

标签: sql dynamic filtering where

我不确定如何100%处理此问题,但我认为它可能是使用动态SQL的东西。用户希望能够使用GUI上的复选框来传递变量。并非所有复选框都会通过数据进行检查。一次只能检查几个。无论如何,我投票支持无线电盒,所以现在问题是我必须根据他们传入的变量进行过滤。所以在WHERE子句中它需要动态过滤。我很少使用动态SQL,而且我不是DBA。因此,如果我使用数据传入两个值并且一个为null,那么当其中一个值为nothing或null时,如何防止它在Where子句中进行过滤。

这样的事情:

@Ajax.ActionLink("Add New Item", "NewItem", new AjaxOptions
{
    HttpMethod = "GET",
    InsertionMode = InsertionMode.InsertBefore,
    UpdateTargetId = "item-list"
})

1 个答案:

答案 0 :(得分:1)

使用OR

SELECT * 
FROM Table 
WHERE (@obj1 IS NULL OR ( ... filter with @obj1 here  ) ) AND
      (@obj2 IS NULL OR ( ... filter with @obj2 here  ) ) AND
      (@obj3 IS NULL OR ( ... filter with @obj3 here  ) ) 

例如,如果@ obj1为NULL,那么有关@obj1的相应谓词将从WHERE子句中删除。