[英]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.