2011-12-21 70 views
1

我有我正在執行搜索操作的存儲過程,該過程需要10個輸入參數並返回爲這些參數找到的行。如何根據存儲過程中不爲空/參數值生成WHERE條件?

我正在使用LIKE搜索運算符,但我的問題是有可能只有少數參數傳遞值,其餘可以是空白或空值。我想從查詢的WHERE條件中排除空白/空參數值,請給我建議。

在此先感謝

SP

+0

請顯示一些代碼? – paulsm4 2011-12-21 06:23:15

+0

它是否必須使用LIKE命令?如果您使用全文搜索IMO更好地查詢這樣的文本。我還建議你使用來自C#的參數化查詢,將比動態查詢更優化 – lloydom 2011-12-21 09:01:41

回答

1
select * 
from YourTable 
where (@Param1 is null or Field1 like @Param1) 
    and (@Param2 is null or Field2 like @Param2) 

您可以使用任何條件,而不是like

0

select * from Table where isnull(@Field1,Field1) = Field1 and isnull(@Field2,Field2) = Field2

使用相同的技術,你可以做之前測試的空白查詢的選擇部分並將其轉換爲空之前選擇(它會覆蓋你的空白和空的情況下)

相關問題