最佳答案
我正在创建一个存储过程来对表进行搜索。我有许多不同的搜索字段,所有这些都是可选的。有没有一种方法可以创建一个存储过程来处理这个问题?假设我有一个包含四个字段的表:ID、FirstName、LastName和Title.我可以这样做:
CREATE PROCEDURE spDoSearch
@FirstName varchar(25) = null,
@LastName varchar(25) = null,
@Title varchar(25) = null
AS
BEGIN
SELECT ID, FirstName, LastName, Title
FROM tblUsers
WHERE
FirstName = ISNULL(@FirstName, FirstName) AND
LastName = ISNULL(@LastName, LastName) AND
Title = ISNULL(@Title, Title)
END
这类作品。但是,它会忽略FirstName、LastName或Title为空的记录。如果没有在搜索参数中指定title,我希望包括title为空的记录-FirstName和LastName相同。我知道我可以用动态SQL做到这一点,但我想避免这种情况。