[英]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)
如果TerminationDate
是null
,那么它不能大於 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.