繁体   English   中英

SQL过滤器中的where子句

[英]SQL Filter in the where clause

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

像这样:

DECLARE
@obj1 AS NVARCHAR(10) = 'data',
@obj2 AS NVARCHAR(10) = 'data',
@obj3 AS NVARCHAR(10) = '',

SELECT something FROM Table WHERE 
IF @obj1 is not null then filter,
If @obj2 is not null then filter,
If @obj3 is not null then filter

使用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子句中删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM