簡體   English   中英

SQL 服務器中這兩個 AND 運算符有什么區別?

[英]What is the difference between these two AND Operators in SQL Server?

AND (
     (mmd.TerminationDate IS NOT NULL AND mmd.TerminationDate >= '01-Jan-2019')
     OR mmd.TerminationDate IS NULL
)
AND (mmd.TerminationDate IS NULL OR mmd.TerminationDate >= '01-Jan-2020')

假設字面日期應該是相同的,這兩個條件都做同樣的事情——也就是說,允許日期為 null 或大於 1 月 1 日。

第一個表達式不必要地多余:

(mmd.TerminationDate is NOT NULL and mmd.TerminationDate >= '01-Jan-2019') 
or mmd.TerminationDate is null)

如果TerminationDatenull ,那么它不能大於 1 月 1 日,所以第一個子條件實際上歸結為mmd.TerminationDate >= '01-Jan-2019'

無關說明:雖然 SQL 服務器在理解日期格式方面非常靈活,但我會使用更標准的格式來表示一月第一,例如:

mmd.TerminationDate is Null OR mmd.TerminationDate >= '2019-01-01'

第一部分:

AND((mmd.TerminationDate 不是 NULL 和 mmd.TerminationDate >= '01-Jan-2019')或 mmd.TerminationDate 為空)

這里它驗證了兩件事:(mmd.TerminationDate is NOT NULL and mmd.TerminationDate >= '01-Jan-2019')這兩個條件都應該是 True 否則它不是那么第二個條件(mmd.TerminationDate 為空)應該是真的。

(mmd.TerminationDate 不是 NULL 和 mmd.TerminationDate >= '01-Jan-2019'):它正在檢查終止日期不應該是 null 和終止日期應該等於或大於 '01-Jan-2'日期。 這兩個條件都應該為真,否則將無法驗證。

“或”之后的第二部分:

(mmd.TerminationDate 為空):這是驗證終止日期不應為 null,此列應具有任何日期值。

在這兩個條件之間,您使用了“或”,這意味着從這兩個條件中,任何人都應該符合條件才能獲得記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM