我继承了一些糟糕的SQL代码(没有任何文档,我也缺少原始需求)。在where子句中,它有以下内容:
根据我对逻辑运算符的了解,我的假设是SQL会将其编译为:
这是一个问题吗?
我有一种感觉,意图是…
我需要与最初请求此项目的人交谈,因为我还没有看到原始要求。
A OR B AND C AND D OR E
根据我对逻辑运算符的了解,我的假设是SQL会将其编译为:
A OR (B AND C AND D) OR E
这是一个问题吗?
我有一种感觉,意图是…
(A OR B) AND C AND (D OR E)
我需要与最初请求此项目的人交谈,因为我还没有看到原始要求。
(A OR ((B AND C) AND D)) OR E
。这在语义上等同于你的第二个版本。 - Gordon LinoffAND
比OR
具有更高的优先级。 - Alex Poole