繁体   English   中英

如何将SQL中的参数默认值设置为ALL

[英]How to set Default Value of Parameter in SQL to ALL

我的表中有3个参数,分别称为@StartDate@EndDate@ServerName 我希望所有这些3的默认值都设置为ALL。

用户可以选择StartDateEndDate ,它将在这些日期返回所有停止的服务。 我还希望他们能够搜索ServerName ,无论服务何时停止,它都将返回该ServerName所有记录。

我的问题是搜索server name 现在,我只是临时修复了参数,这就是将@StartDate参数的默认值设置为年初,该日期是记录任何记录之前的日期,而@EndDate设置为当前日期。日期。 因此,当报表打开时,它会显示所有已停止服务的记录,然后用户可以根据需要调整开始和结束日期。 但是,当我搜索ServerName我希望它只查找该ServerName所有记录,但它仍然只返回Start和End Date中的所有记录。

这是我的查询:

SELECT ServerName, ServiceName, Status, Date, Time
FROM ServicesStatus
WHERE (Date BETWEEN @StartDate AND @EndDate) OR (ServerName = @ServerName)
ORDER BY Date DESC, Time DESC, ServerName

因此,我需要将@StartDate@EndDate设置为所有日期的默认值,以便当有人搜索ServerName ,它将在SQL数据库中返回该服务器的所有实例。

我还需要对@ServerName参数使用相同的参数,因此当某人搜索时间范围时,它将返回在该时间段内具有已停止服务的所有服务器名称。

您可以在where子句中使用OR运算符将默认参数值设置为NULL

如果用户未使用任何条件,则它将选择所有数据。

DECLARE @StartDate DATETIME = NULL
DECLARE @EndDate DATETIME  = NULL
DECLARE @ServerName VARCHAR(100) = NULL

SELECT        ServerName, ServiceName, Status, Date, Time
FROM          ServicesStatus
WHERE         
    (Date >= @StartDate OR @StartDate IS NULL) 
AND 
    (Date <= @EndDate OR @EndDate IS NULL)
OR
    (ServerName = @ServerName OR @ServerName IS NULL)
ORDER BY      Date DESC, Time DESC, ServerName

这是默认参数sampleFiddle

注意

您的默认值可以是其他值(例如'ALL' ),这些值不必为NULL 您可以默认参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM