在SQL Server中,这两个AND操作符有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL Server中,这两个AND操作符有什么区别?相关的知识,希望对你有一定的参考价值。

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')
答案

假设字面日期应该是相同的,这两个条件做的是同样的事情--即允许日期为空或大于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 Server对日期格式的理解相当灵活,但我会用更标准的格式来表示1月1日,比如。

mmd.TerminationDate is Null OR mmd.TerminationDate >= '2019-01-01'
另一答案

第一部分:

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

这里,它正在验证两件事。(mmd.TerminationDate is NOT NULL and mmd.TerminationDate >= '01-Jan-2019')这两个条件都应该为真,否则第二个条件(mmd.TerminationDate is null)应该为真。

(mmd.TerminationDate is NOT NULL and mmd.TerminationDate >= '01-Jan-2019'):它是在检查Termination date不应该是null,Termination date应该等于或大于'01-Jan-2019'这个日期。这两个条件都必须为真,否则将无法验证。

'或'后面的部分。

(mmd.TerminationDate is null):这是验证Termination date不应该是空的,这一列应该有任何日期值。

在这两个条件之间你使用了'or',这意味着从这两个条件中,任何人都应该符合条件来获得记录。

以上是关于在SQL Server中,这两个AND操作符有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server不等式比较运算符,为啥有两个[重复]

asp.net mvc用sql server数据库和用sql server compact数据库有啥区别

sql server 中union的用法

安装过了sql server之后,又安装mysql但是mysql不出现配置

windows server 2008 r2 这两个版本有啥区别

SQL Server 2000 中的这个操作数(*= 星号)是啥?