我有我正在執行搜索操作的存儲過程,該過程需要10個輸入參數並返回爲這些參數找到的行。如何根據存儲過程中不爲空/參數值生成WHERE條件?
我正在使用LIKE
搜索運算符,但我的問題是有可能只有少數參數傳遞值,其餘可以是空白或空值。我想從查詢的WHERE
條件中排除空白/空參數值,請給我建議。
在此先感謝
SP
我有我正在執行搜索操作的存儲過程,該過程需要10個輸入參數並返回爲這些參數找到的行。如何根據存儲過程中不爲空/參數值生成WHERE條件?
我正在使用LIKE
搜索運算符,但我的問題是有可能只有少數參數傳遞值,其餘可以是空白或空值。我想從查詢的WHERE
條件中排除空白/空參數值,請給我建議。
在此先感謝
SP
select *
from YourTable
where (@Param1 is null or Field1 like @Param1)
and (@Param2 is null or Field2 like @Param2)
您可以使用任何條件,而不是like
select * from Table where isnull(@Field1,Field1) = Field1 and isnull(@Field2,Field2) = Field2
使用相同的技術,你可以做之前測試的空白查詢的選擇部分並將其轉換爲空之前選擇(它會覆蓋你的空白和空的情況下)
請顯示一些代碼? – paulsm4 2011-12-21 06:23:15
它是否必須使用LIKE命令?如果您使用全文搜索IMO更好地查詢這樣的文本。我還建議你使用來自C#的參數化查詢,將比動態查詢更優化 – lloydom 2011-12-21 09:01:41