我有一個存儲過程,它根據4個參數從表中提取信息。如果參數爲空,SQL將忽略WHERE部分
我想獲取基於參數的值,但如果參數爲NULL,則不檢查該參數。所以如果所有4個參數都是空的,我會顯示整個表格。
這是我的SP(你可以看到,1個參數ATM這隻適用):
CREATE PROCEDURE myProcedure
@Param1 nvarchar(50),
@Param2 nvarchar(50),
@Param3 nvarchar(50),
@Param4 nvarchar(50)
AS
BEGIN
IF(@Param1 IS NULL)
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable
END
ELSE
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable WHERE col1 LIKE @Param1+'%'
END
END
是否有某種方式來做到這一點沒有有每一個可能的組合IF
(15倍的IF )?
Erland Sommarskog的[T-SQL中的動態搜索條件](http://www.sommarskog.se/dyn-search.html)將是通常的起始位置。 –
可能的重複[存儲過程與可選的「WHERE」參數](http://stackoverflow.com/questions/697671/stored-procedure-with-optional-where-parameters) – GSerg