[英]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.