【发布时间】:2021-02-12 15:25:40
【问题描述】:
在 WHERE 部分或任何真正有多个条件(如 OR)的地方,我知道外括号是必需的,但内括号是必需的吗?
例如我的假设是
WHERE A.Title='EMP'
AND ( (A.NAME='Mike') OR (A.ID='9001') )
和写一样
WHERE A.Title='EMP'
AND ( A.NAME='Mike' OR A.ID='9001' )
但是,如果我们删除外括号,那么我知道查询会有所不同。
例子:
WHERE A.Title='EMP'
AND (A.NAME='Mike') OR (A.ID='9001')
和
WHERE A.Title='EMP'
AND A.NAME='Mike' OR A.ID='9001'
两者都是一样的东西,但根本不是我们想要的。
是否有可能在前 2 个条件之间对数据进行不同的评估?
【问题讨论】:
-
“是否有可能在 2 个条件之间对数据进行不同的评估?” 不会。将单个布尔表达式包裹在括号内不会改变任何事情。
-
@Larnu 谢谢。有人告诉我其他事情,我必须确定。
-
WHERE A.NAME='Mike' OR A.ID='9001',SQL 不是 Lisp。 -
@Mike-SMT
I was told something else究竟是什么?这可能与您的想法无关。AND在二进制逻辑中的优先级高于OR,因此在几乎所有语言中A OR B AND C与(A OR B) AND C不同。它与数学中的加法和乘法没有什么不同。甚至使用相同的符号,例如+表示 OR -
请,推荐查看此顶部关于SQL Logic Operator Precedence: And and Or
标签: sql sql-server parentheses