2016-08-24 71 views
0

我正在使用动态查询,如果参数值为false,需要向查询添加列。根据参数值将条件添加到条件SQL

// SQL:

SET @FilterExp = 'SELECT * from tblName where ptblnFlag = '+Convert(varchar(2),@blnFlag)+') as tbl where 1=1'+ COALESCE(NULLIF(CONVERT(varchar(8000), @FilterExp),''), '') 

在上述查询我需要检查@blnFlag是假,则列可以在其中条件加入。如果属实,则不需要在那里。

如果条件为false,它应该返回所有值,如果为true,则结果集基于条件。

回答

1

你只需要AND/OR运营商没有必要的Dynamic query这里

SELECT * 
FROM tblName 
WHERE (ptblnFlag = @blnFlag 
     AND @blnFlag = 0) 
     OR @blnFlag = 1 

可能是错的变量名,但逻辑将是相同的

+0

它,我已经最小化,以获得更好的理解一些大的查询。 – iamCR

+0

@SanthoshKumar好的,无论我的答案是否有帮助。如果不是,那么改变这个问题。不要使用有问题的动态sql。就像if'@blnFlag = 0'那样,如果'@blnFlag <> 0'选择查询应该像'select * from ...'那么select查询应该像'select * from ...' –

+0

您的逻辑工作。我有几个子查询和更复杂的条件,这就是为什么我提到'动态查询'。谢谢你的时间。 – iamCR