因此,我試圖編寫一個t-sql函數,它將搜索數據庫中的某些字段,但前提是字段不爲空。所以在下面的查詢中,我的c#調用會傳入這些參數,但是如果我不想傳入其中一個參數或者其中一個參數爲null,我希望它仍然可以搜索,但只能通過不是' t null(基本上從where子句中排除)。是否有捷徑可尋?或者我將不得不爲每個輸入組合單獨查詢?如何用變量或未知數量的參數編寫tsql搜索函數?
CREATE FUNCTION [dbo].[Search]
(
@firstname VarChar(50),
@lastname VarChar(80),
@userId VarChar(50),
@vehicle VarChar(50)
)
RETURNS @returntable TABLE
(
firstname VarChar(50),
lastname VarChar(80),
userId VarChar(50),
vehicle VarChar(50),
passengers VarChar(50)
)
AS
BEGIN
INSERT @returntable
SELECT * FROM Drivers
Where firstname = @firstname and lastname = @lastname and
userid = @userId and vehicle = @vehicle
RETURN
END
爲什麼你想寫它作爲一個fucntion? – mybirthname
當然這很常見。這是一個全面的查詢。這裏是關於這個話題的優秀文章。 http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/順便說一下,這將更適合作爲存儲過程而不是表值函數。 –