2016-08-24 70 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