【发布时间】:2015-04-14 13:28:40
【问题描述】:
所以我正在尝试编写一个 t-sql 函数,该函数将在数据库中搜索某些字段,但前提是这些字段不为空。因此,在下面的查询中,我的 c# 调用将传入这些参数,但如果我不想传入其中一个参数或其中一个为空,我希望它仍然搜索,但只能通过“ t null(基本上从 where 子句中排除)。是否有捷径可寻?还是我必须对每种输入组合进行单独查询?
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
【问题讨论】:
-
为什么要把它写成一个函数?
-
当然这很常见。这是一个包罗万象的查询。这是一篇关于这个主题的优秀文章。 sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries BTW,这将更适合作为存储过程而不是表值函数。
标签: c# sql sql-server tsql