簡體   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